3

从最近几天开始,protoc 生成器正在使用 github.com/grpc-ecosystem/grpc-gateway 的 v2 版本生成代码。我想继续使用 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 ```
4

2 回答 2

1

我花了 3 个小时调试完全相同的问题。

您必须从GOPATHand中删除二进制文件GOROOT

为简单起见,只需使用which protoc-gen-grpc-gateway.

这应该指向您protoc正在使用的二进制文件。删除它并重新运行go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.16.0

于 2021-05-17T23:34:57.443 回答
0

我想你已经安装了v2生成器的版本。不幸的是,你不能使用v1.16.0新版本的 go protobuf 生成器。如果您想继续使用v1.16.0,可以从发布页面https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.16.0下载生成器。

于 2021-03-08T21:42:49.383 回答