在使用etcd 做服务注册和发现,编译时提示 下列错误:
# github.com/coreos/etcd/clientv3/balancer/picker
F:\Go\pkg\mod\github.com\coreos\[email protected]+incompatible\clientv3\balancer\picker\err.go:37:44: undefined: balancer.PickOptions
F:\Go\pkg\mod\github.com\coreos\[email protected]+incompatible\clientv3\balancer\picker\roundrobin_balanced.go:55:54: undefined: balancer.PickOptions
# github.com/coreos/etcd/clientv3/balancer/resolver/endpoint
F:\Go\pkg\mod\github.com\coreos\[email protected]+incompatible\clientv3\balancer\resolver\endpoint\endpoint.go:114:78: undefined: resolver.BuildOption
F:\Go\pkg\mod\github.com\coreos\[email protected]+incompatible\clientv3\balancer\resolver\endpoint\endpoint.go:182:31: undefined: resolver.ResolveNowOption
原因是 google.golang.org/grpc 1.26 后的版本是不支持 clientv3 的,有两个方法可以解决这个问题,
第一种方式:
只需要把grpc改成 1.26 版本的即可,具体操作方法是在 go.mod 里加上:
具体操作方法是在 go.mod 里加上:
replace google.golang.org/grpc => google.golang.org/grpc v1.26.0
第二种方法:
如果必须在项目中使用更高版本的grpc,则只需要引用更高版本的etcd库即可,代码如下:
import (
"go.etcd.io/etcd/client/v3"
)
即 import 时把 go.etcd.io/etcd/client/v3 替代 go.etcd.io/etcd/clientv3
然后 go.mod 中使用 go mod init 或者 go mod tidy, 我的依赖情况如下:
require (
go.etcd.io/etcd/client/v3 v3.5.12 // indirect
google.golang.org/grpc v1.59.0 // indirect
)
标签:clientv3,grpc,balancer,报错,etcd,go,mod From: https://www.cnblogs.com/vtools/p/18082763