如何解决grpc-gateway 运行时版本冲突
从最近几天开始,protoc 生成器正在使用 github.com/grpc-ecosystem/grpc-gateway 的 v2 版本生成代码。我想继续使用 github.com/grpc-ecosystem/grpc-gateway v1.16.0。我无法删除导致冲突的 v2 版本。我尝试从 go.mod 中删除,从 $GOPATH 中清除。我想我的 protoc 生成器无法使用 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 ```
解决方法
我认为您已经安装了 v2
版本的生成器。不幸的是,您不能将 v1.16.0
与较新版本的 go protobuf 生成器一起使用。如果您想继续使用 v1.16.0
,可以从发布页面 https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.16.0 下载生成器。
我花了 3 个小时调试完全相同的问题。
您必须从 GOPATH
和 GOROOT
中删除二进制文件。
为简单起见,只需使用 which protoc-gen-grpc-gateway
。
这应该会指向您正在使用的二进制文件 protoc
。删除它并重新运行 go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.16.0
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。