1 go mod tidy

go mod tidy默认情况下在拉取go的依赖包时都是走的https协议,但是go的私有git仓库都是只支持http协议,所以当你的go.mod里面有私有仓库的依赖时,在使用go mod tidy拉取依赖时,一定会遇到这么个问题,就是使用https协议去请求你的私有仓库的依赖,导致请求不同,拉取不到。

2 解决方法1

通过设置git环境配置,强制让私有仓库的请求不走https协议,参考:https://blog.csdn.net/sky527759/article/details/124818233

3 解决方法2

添加参数或环境变量。

(1)使用 go get -insecure

这种方式不推荐,原因如下

  1. 添加 -insecure 参数即表示更新依赖时可以不去校验CA证书,但是这会带来一个问题:范围无法界定(overkill),所有与要更新依赖相关联的依赖,均不会去做校验,可能会意外更新到不安全的依赖。
  2. -insecure 仅支持 go get 命令,不支持 go mod 命令,因此使用 go mod 命令时是无法更新不支持https协议的私有库的。
  3. 添加 GOINSECURE 参数

(2)使用GOINSECURE环境变量

推荐这种方式

在Go 1.14中增加了新的环境变量,用于指定哪些域名下的仓库不去校验CA证书。

通过设置go的环境变量,GOINSECUREGOPRIVATE,把这2个参数设置成私有仓库的域名即可:

1
go env -w GOINSECURE=your.example.com GOPRIVATE=your.example.com

Reference

  1. https://blog.csdn.net/sky527759/article/details/124818233
  2. https://www.cnblogs.com/hiwz/p/12652153.html

写在最后

欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。
微信公众号