关于etcd安装使用遇到的坑
关于etcd安装使用遇到的坑no required module provides package go.etcd.io/etcd/clientv3; to add it:go get go.etcd.io/etcd/clientv3或者undefined: resolver.ResolveNowOption再或者:module declares its path as: go.etcd.io/b
·
报错如下:
no required module provides package go.etcd.io/etcd/clientv3; to add it:
go get go.etcd.io/etcd/clientv3
或者:
undefined: resolver.ResolveNowOption
再或者:
module declares its path as: go.etcd.io/bbolt
but was required as: github.com/coreos/bbolt
关于etcd安装使用遇到的坑
先说解决方法(有两点):
- 确保
etcd
客户端成功get到。命令行下载命令:
【百度给的下载命令是 go get go.etcd.io/etcd/clientv3。这是错的,md。。】
go get go.etcd.io/etcd/client
不用指明版本,会安装所有版本,不信去看源码包,地址
- 确保正确的引入
import (clientV3 "go.etcd.io/etcd/client/v3")
给v3起个别名,用别名
去获取包下的类和方法
即可,代码剩下的只要代码没问题就行。结束
正确的关键代码
package main
import (
"fmt"
"time"
clientv3 "go.etcd.io/etcd/client/v3"
)
func main() {
cli, err := clientv3.New(clientv3.Config{
Endpoints: []string{"127.0.0.1:2379"},
DialTimeout: 5 * time.Second,
})
if err != nil {
panic(err)
}
fmt.Println("etcd boot success")
defer cli.Close()
}
问题的反思:
顺着报错去百度上找了相关的回答,确实挺相关的,但是在我这边无效。作者不知道是否真的泡通了。直到我去看了官方的文档的示例才发现不对。我是跟着网上视频教程来的,当然教程有点久远了好像19年的。
- 如果代码确定写的没问题,最好可以找找官发文档,尝试发现原因
- 熟悉语言基础特性。如果我很懂go包管理和代码风格的话也能找到问题了,一开始有下载成功客户端,但是编辑器也有提示引入错误了,如果我能跑去打开看下源码文件,源码包看到文件名或许就发现问题了,明显client下是还有文件夹的,引入的深度不对
- it更新换代快,年代久的教程谨慎入手
更多推荐
已为社区贡献1条内容
所有评论(0)