簡體   English   中英

undefined: grpc.ClientConnInterface 編譯grpc時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM