Конфликт версий среды выполнения grpc-gateway

с последних нескольких дней генератор протоколов генерирует код с версией v2 github.com/grpc-ecosystem/grpc-gateway. Я хочу продолжать использовать github.com/grpc-ecosystem/grpc-gateway v1.16.0. Я не могу удалить версию v2, которая вызывает конфликт. Я попытался удалить из go.mod, очистив из $ GOPATH. Я полагаю, что мой генератор протоколов не может использовать версию v1. Пожалуйста, подскажите, как мне синхронизировать пакет среды выполнения grpc-gateway.

Использование приведенных ниже команд для создания сообщений и обслуживания.

protoc -I . --go-grpc_out=. api/protobuf-spec/catalog_fetch/*.proto
protoc -I . --grpc-gateway_out=logtostderr=true:. api/protobuf-spec/catalog_fetch/*.proto

Примечание. Он генерирует как файл grpc.pb.go, так и файл pb.go, что также вызывает проблемы.

cannot use mux (type *"github.com/grpc-ecosystem/grpc-gateway/runtime".ServeMux) as type *"github.com/grpc-ecosystem/grpc-gateway/v2/runtime".ServeMux ```

person Jyoti Kumari    schedule 10.02.2021    source источник


Ответы (2)


Я потратил 3 часа на отладку той же проблемы.

Вы должны удалить двоичный файл из ваших GOPATH и GOROOT.

Для простоты просто используйте which protoc-gen-grpc-gateway.

Это должно указать вам на двоичный файл, который protoc использует под капотом. Удалите его и перезапустите go get -u github.com/grpc-ecosystem/grpc-gateway/[email protected].

person Trí Trần Minh    schedule 17.05.2021

Думаю, вы установили v2 версию генератора. К сожалению, вы не можете использовать v1.16.0 с более новыми версиями генераторов go protobuf. Если вы хотите продолжать использовать v1.16.0, вы можете загрузить генератор со страницы выпусков https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.16.0.

person Rajiv Singh    schedule 08.03.2021