ETCD在Golang 生态圈中有举足轻重的地位,很多开源项目用到了它,可以用它做配置中心、服务发现。但是相信不少人在使用go client时会遇到以下几个问题,这里暂且做个简单的记录。
问题一
1
cannot find module providing package github.com/coreos/go-systemd/journal
解决方式有两种: 第一种:从github拉取go-systemd代码保存到 $GOPATH src 下,然后replace go.mod中的go-systemd
1
2
vim go.mod
replace github.com/coreos/go-systemd => /workspace/go/src/github.com/coreos/go-systemd
第二种: 直接replace并指定版本
1
replace github.com/coreos/go-systemd => github.com/coreos/go-systemd/v22 v22.0.0
问题二
1
2
module declares its path as: go.etcd.io/bbolt
but was required as: github.com/coreos/bbolt
解决(这里来回replace两次竟然就好了,很是神奇):
1
2
replace github.com/coreos/bbolt v1.3.4 => go.etcd.io/bbolt v1.3.4
replace go.etcd.io/bbolt v1.3.4 => github.com/coreos/bbolt v1.3.4
问题三
关于grpc 的错误,会有一些定义找不到,这是因为Etcd的代码和新版的grpc v1.27.0有冲突,所有需要让项目依赖老版本的grpc。
解决:
1
replace google.golang.org/grpc => google.golang.org/grpc v1.26.0