未定义:编译 grpc 时的 grpc.ClientConnInterface

我是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 文件中的库版本上。


ITMISS
浏览 160回答 2
2回答

炎炎设计

replace (   github.com/coreos/etcd => github.com/ozonru/etcd v3.3.20-grpc1.27-origmodule+incompatible   google.golang.org/grpc => google.golang.org/grpc v1.27.0)在 go.mod 中应该有帮助

慕森卡

很高兴您启动了 GRPC。看来你老protoc-gen-go了,需要更新了,要更新它,你应该首先,删除当前的,找到它存储的位置,你可以使用echo $PATH 命令找出这个文件在哪里。然后删除它。第二,安装新的,安装它你可以运行这个命令。go install 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go