![](/img/trans.png)
[英]undefined: grpc.SupportPackageIsVersion7 grpc.ServiceRegistrar
[英]undefined: grpc.ClientConnInterface when compiling grpc
我是 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
我正在像這樣生成我的 protobufs:
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 高興,但我不知道我需要做什么才能消除其他錯誤 go。 不幸的是,由於我的存儲庫中的其他內容在我嘗試升級這些庫時無法編譯,因此我停留在我的 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
的舊版本
謝謝@bithavoc 的有用評論:要查看最新版本,只需在pkg.go.dev/google.golang.org/grpc上查找版本
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 應該有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.