记录一次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成功,期间耽搁了不少时间,所以平时养成良好的习惯,自己排查问题的能力也需要多多加强