Saki's 研究记录

golang调用etcdv3报错undefined

字数统计: 173阅读时长: 1 min
2021/11/21

问题

最近准备使用Etcd开发一些分布式的应用,结果第一步就翻车了。
当信心满满的使用go mod开始go mod tidyetcdv3有报错:

1
2
3
4
5
6
# github.com/coreos/etcd/clientv3/balancer/picker
undefined: balancer.PickOptions
undefined: balancer.PickOptions
# github.com/coreos/etcd/clientv3/balancer/resolver/endpoint
undefined: resolver.BuildOption
undefined: resolver.ResolveNowOption

解决办法

Etcd的代码和新版本的grpc(v1.27.0)冲突,再次施展替换大法,让项目使用老的grpc:

1
2
3
4
# 将 grpc 版本替换成 v1.26.0
go mod edit -require=google.golang.org/grpc@v1.26.0
# 获取 v1.26.0 版本的 grpc
go get -u -x google.golang.org/grpc@v1.26.0

通过以上的操作,即可解决以上问题。

建议

趁早换成 go.etcd.io/etcd/client/v3 吧!

Done.

CATALOG
  1. 1. 问题
  2. 2. 解决办法
  3. 3. 建议