go版本升級到1.17.1后,go mod tidy 時候 etcd依賴報錯:
go: common/modules/etcd imports
go.etcd.io/etcd/clientv3 tested by
go.etcd.io/etcd/clientv3.test imports
github.com/coreos/etcd/auth imports
github.com/coreos/etcd/mvcc/backend imports
github.com/coreos/bbolt: github.com/coreos/bbolt@v1.3.6: parsing go.mod:
module declares its path as: go.etcd.io/bbolt
but was required as: github.com/coreos/bbolt
于是求助于網(wǎng)絡(luò),很多文章比較老舊,提供辦法如下(仍不能解決):
go mod init
go mod edit -replace github.com/coreos/bbolt@v1.3.4=go.etcd.io/bbolt@v1.3.4
go mod edit -replace google.golang.org/grpc@v1.29.1=google.golang.org/grpc@v1.26.0
go mod tidy
最后,經(jīng)過通過升級Etcd依賴版本解決,正確方法如下:
-
更新etcd依賴引入路徑
# 替換之前 import( "go.etcd.io/etcd/clientv3" ) # 替換之后 import( "go.etcd.io/etcd/client/v3" )
-
執(zhí)行命令
rm go.mod go.sum go mod init main go mod tidy go build .
之后go.mod中依賴大概是:
require (
go.etcd.io/etcd/client/pkg/v3 v3.5.0 // indirect
go.etcd.io/etcd/client/v3 v3.5.0 // indirect
google.golang.org/grpc v1.38.0 // indirect
)
總結(jié):因為etcd v3版本接口和最新的grpc兼容,所以不用再像網(wǎng)上歷史文章那樣去處理,直接替換etcd包地址即可。