使用 go-micro 的时候 etcd,grpc-gateway 产生冲突
go-micro遇到错误
//go.mod
module go-micro/micro
go 1.13
require (
....
google.golang.org/grpc v1.26.0
google.golang.org/protobuf v1.22.0
)
运行grpc-gateway http.main的时候报错
undefined grpc.SupportPackageIsVersion6
undefined: grpc.ClientConnInterface
原因是:
go get 安装的 protoc-gen-go是最新版本
那么protoc 生成的***.pb.go,会有一样
proto.SupportPackageIsVersion6,这个常量在proto包中是找不到的。
解决方案:
升级grpc库
go get google.golang.org/grpc@v1.27.0
运行grpc-gateway(http)服务端,没问题。眼看就要成功了!,but
运行grpc服务端,报错:
github.com/coreos/etcd@v3.3.18+incompatible... undefined: resolver.BuildOption
github.com/coreos/etcd@v3.3.18+incompatible... undefined: resolver.ResolveNowOption
现在etcd和grpc v1.27.0产生冲突,那么陷入僵局。protoc --grpc-gateway_out=
生成出来的pb.go代码需要grpc 1.27.0,而etcd需要grpc 1.26.0
解决方案:
1. 还原grpc到1.26.0
//go.mod
module go-micro/micro
go 1.13
require (
...
google.golang.org/grpc v1.26.0
google.golang.org/protobuf v1.22.0
)
2. protoc-gen-go 降级
go get -u -v github.com/golang/protobuf/protoc-gen-go@v1.3.0
本作品采用《CC 协议》,转载必须注明作者和本文链接