Разрешение конфликта импортированных пакетов для 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

но по какой-то причине он более устойчив и не вызывает ошибку двойного импорта.

Другие вопросы по тегам