Разрешение конфликта импортированных пакетов для mockgen
У меня есть столкновение пакета, где я получаю следующую ошибку:
mockgen -package=mocks -source=myproto.pb.go -destination=mocks/my_mocks.go
imported package collision: "foo" imported twice
Я вижу один импорт, который очевиден:import foo "blah/blah/foo"
Но я не знаю, с чего начать отслеживать дубликаты импорта (и откуда они поступают). Мне кажется странным, что это проблема, так как я импортирую myproto.pb.go очень хорошо, поэтому мне интересно, действительно ли существует проблема с двойным импортом. Кроме того, GoLand не показывает никаких проблем.
Я надеюсь, что кто-то может указать мне направление получения дополнительной информации о том, откуда поступает дубликат импорта, проверить, есть ли какая-либо проблема и / или обойти ее.
1 ответ
Это кажется постоянной проблемой. Я просто столкнулся с этим, утверждая, "rand"
был импортирован дважды (хотя мой код не импортируется "rand"
).
Следующий обходной путь работал для меня: Запишите список интерфейсов в myproto.pb.go
вы хотите издеваться, и использовать "режим отражения" вместо "исходного режима"
mockgen -package=mocks -destination=mocks/my_mocks.go path.to/package/containing/myproto/pb/go [space-separated interface names]
должен быть эквивалентен вашему предыдущему вызову:
mockgen -package=mocks -source=myproto.pb.go -destination=mocks/my_mocks.go
но по какой-то причине он более устойчив и не вызывает ошибку двойного импорта.