go - 编译grpc时未定义: grpc. ClientConnInterface

标签 go protocol-buffers grpc grpc-go

我是 grpc 的新手。在我的 go.mod 文件中,我有:

google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8
google.golang.org/grpc v1.21.1
github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d
github.com/golang/protobuf v1.3.2

我正在像这样生成我的 protobuf:

go get google.golang.org/protobuf/cmd/protoc-gen-go
go get google.golang.org/grpc/cmd/protoc-gen-go-grpc
protoc --go_out=. --go-grpc_out=. ./me.proto

我在尝试运行测试和构建时收到以下错误:

me_grpc.pb.go:15:11: undefined: grpc.SupportPackageIsVersion7
me_grpc.pb.go:25:5: undefined: grpc.ClientConnInterface
me_grpc.pb.go:28:30: undefined: grpc.ClientConnInterface
me_grpc.pb.go:65:34: undefined: grpc.ServiceRegistrar

我发现将 SupportPackageIsVersion7 切换到 SupportPackageIsVersion5 让 gopls 很高兴,但我不知道我需要做什么才能消除其他错误。不幸的是,由于我的 repo 中的其他内容在我尝试升级这些库时无法编译,因此我被困在 go.mod 文件中的库版本上。

最佳答案

很高兴您启动了 GRPC。

您的 protoc-gen-go 似乎很旧,需要更新,

你应该更新它

  • 首先,删除当前文件,要找到它的存储位置,可以使用 echo $PATH 命令找出这个文件在哪里。然后删除它。

  • 其次,安装新的,安装时可以运行这个命令。

    去安装google.golang.org/grpc/cmd/protoc-gen-go-grpc

    注意如果获取有任何问题,请改用此命令,

    go get -u github.com/golang/protobuf/protoc-gen-go

更新后,您必须编辑您的 go.mod 文件。

改变这一行:

google.golang.org/grpc v1.21.1

google.golang.org/grpc v1.33.2

这个版本(1.33.2)支持SupportPackageIsVersion7,你的问题就解决了。

注意: SupportPackageIsVersion7 支持 1.32.0 版本之后。他们支持旧版本 go version >= 1.12

关于go - 编译grpc时未定义: grpc. ClientConnInterface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64815927/

相关文章:

go - 什么是 golang 相当于 PHP/Ruby 的 unpack ("C*", . )?

string - Golang 中是否有可用的文本数据类型?

go - 使用 goroutines 时 HTTP GET 请求的时间响应

java - 使用多模块 Maven 应用程序编译 grpc

go - cgo如何在c中表示go类型?

maven - protobuf-maven-plugin 编译为 golang

makefile - 尝试制作 Mosh 源代码时 Protocol Buffer 版本错误

php - Nanopb - 用 PHP 解码

go - 一元与流基准

c# - GRPC 的 SSL 认证