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.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
的旧版本
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 的新手。在我的 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.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
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 应该有帮助