go get拉取常见问题
问题1.出现错误信息: module declares its path as: url1*** but was required as: url2***
出现该错误信息,如果 url1*** 和 url2*** 不一样:
如上图所示:一般是你要拉取的包的go.mod文件的module后面跟的模块名称或者路径名称在你初始化的时候不正确。
修改方法:
将你要拉取的库的 go.mod 的 module 的值修改成“***but was required as:***”后面的值。
问题2. 出现该错误信息:*** is not in GOROOT ***
如上图所示,则需检查你拉取的库的内部是否有 import 包错误,造成该错误的原因,可能是修改 问题1 中的 go.mod的module后面的路径名导致。
解决办法:
修改拉取库的内部import错误的地方
问题3.出现错误信息:dial tcp *******:443: i/o timeout
出现该错误信息原因是,你拉取的库可能是私有库导致的。因为Go 1.13设置了默认的 GOSUMDB=sum.golang.org,
GOSUMDB 的全称为 Go CheckSum Database,用来下载的包的安全性校验问题。包的安全性在使用 GoProxy 之后更容易出现,比如我们引用了一个不安全的 GoProxy 之后然后下载了一个不安全的包,这个时候就出现了安全性问题。
解决办法:
1、关闭哈希校验,可以将 GOSUMDB 设置为 off
go env -w GOSUMDB=off
2、使用 GOPRIVATE 设置私跳过有库,私有仓库自动忽略验证
下面是一个 GOPRIVATE 的示例:
go env -w GOPRIVATE=*.corp.example.com,rsc.io/private
上面的 GOPRIVATE 表示以 *.http://corp.example.com 或者 http://rsc.io/private 开头的 package 都是私有的。
环境变量:
- GOPROXY— 模块代理 URL
列表。该go命令将尝试按顺序从每个服务器下载模块。关键字direct指示go命令从开发模块的版本控制存储库下载模块,而不是使用代理。- GOPRIVATE— 应该被视为私有的模块路径前缀的 glob 模式列表。作为一个默认值GONOPROXY和GONOSUMDB。
- GONOPROXY— 不应从代理下载的模块路径前缀的 glob
模式列表。该go命令将从开发它们的版本控制存储库下载匹配的模块,无论GOPROXY.- GONOSUMDB— 不应使用公共校验和数据库sum.golang.org检查的模块路径前缀的 glob 模式列表 。
- GOINSECURE — 可通过 HTTP 和其他不安全协议检索的模块路径前缀的 glob 模式列表。