2021-07-19

记录一次etcd和grpc版本不兼容的解决过程

问题1

undefined: resolver.BuildOption
undefined: resolver.ResolveNowOption
undefined: balancer.PickOptions

原因:etcd 的 release 版本要求 grpc 的版本是 v1.26.0 之前的,在 go.mod 里添加一句:

replace google.golang.org/grpc => google.golang.org/grpc v1.26.0

问题2

undefined: grpc.SupportPackageIsVersion6
undefined: grpc.ClientConnInterface

原因:protoc-gen-go的版本和grpc版本不兼容,将protoc-gen-go版本降低:

go get -u -v github.com/golang/protobuf/protoc-gen-go@v1.2.0

问题3

重新build发现还是报和错误二相同的错误,然后将$GOPATH下的protoc.exe和protoc-gen-go.exe文件删除,在命令行中输入protoc发现命令已然有效,于是排除可能存在proto.exe和protoc-gen-go.exe且加入到环境变量中的文件目录,将目录中的protoc.exe和protoc-gen-go.exe清除,然后重新执行:

go get -u -v github.com/golang/protobuf/protoc-gen-go@v1.2.0

重新生成pb.go文件之后再次build成功,期间耽搁了不少时间,所以平时养成良好的习惯,自己排查问题的能力也需要多多加强

上一篇:grpcurl工具


下一篇:python 脚本注册consul