当前位置: 首页 > 知识库问答 >
问题:

grpc-网关运行时版本冲突

周枫涟
2023-03-14

从最近几天开始,protoc生成器正在使用github.com/grpc-ecosystem/grpc-gateway的v2版本生成代码。我想继续使用github。com/grpc生态系统/grpc网关v1.16.0。我无法删除导致冲突的v2版本。我试着离开围棋。mod,从$GOPATH清除。我想我的protoc生成器不能使用v1版本。请指导我如何同步grpc网关运行时包。

使用以下命令生成消息和服务

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。转到文件和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 ```

共有2个答案

高寒
2023-03-14

我认为您已经安装了发电机的v2版本。遗憾的是,您无法将v1.16.0与更新版本的go protobuf生成器一起使用。如果您想继续使用v1.16.0,可以从releases页面下载generatorhttps://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.16.0.

壤驷德宇
2023-03-14

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

您必须从您的GOPATH和GOROOT中删除二进制文件。

为简单起见,只需要使用,其中的协议-gen-grpc-网关

这应该会将您指向引擎盖下使用的二进制协议。删除它并重新运行go get-ugithub.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.16.0

 类似资料:
  • 我正在尝试使用NuGet Package Manager控制台将更改部署到数据库。当我发出命令时,该命令失败,并显示一条错误消息: 我的项目目标。NET 4.5.2,据我所知,它提供了在版本。因此,关联库不会放在二进制输出目录中。当我下载版本(Nuget包版本4.3.2)并将其复制到二进制输出目录,以及我的DLL时,我会收到另一条错误消息: 在这两种情况下,例外情况都是并将其抛出到Microsof

  • 问题内容: 我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复。我正在使用以下条件: 这对其他JVM有用吗?有更好的方法来检查吗? 问题答案: 是每个JVM中都存在的系统属性。有两种可能的格式: Java的8或降低:1.6.0_23,1.7.0,1.7.0_80,1.8.0_211 Java的9或更高:9.0.1,11.0.4,12,12.0.1 这是提取主要版本的技巧:如果它是版本

  • 问题内容: 我想知道是否有可能在运行时检索该类来自的jar的版本号? 我知道可以找到该类来自的jar: 但是版本呢? (假设其不在文件名中:) 问题答案:

  • 有没有一种方法可以在运行时访问JUnit5版本? 例如。 在JUnit4中工作得很好。 我正在寻找JUnit5的“对应物” 谢谢:-)

  • 我想知道是否可以在运行时检索类的来源的jar的版本号? 我知道有可能找到类的来源: 但是一个版本呢? (假设它不在文件名中:))

  • 为什么用 grpc-gateway etcd v3 使用 gRPC 作为它的消息协议。etcd 项目包括基于 gRPC 的 Go client 和 命令行工具 etcdctl,通过 gRPC 和 etcd 集群通讯。对于不支持 gRPC 支持的语言,etcd 提供 JSON 的 grpc-gateway。这个网关提供 RESTful 代理,翻译 HTTP/JSON 请求为 gRPC 消息。 使用