报错复现
dev$ go get -v /x/net
Fetching /x/net?go-get=1
https fetch failed: Get /x/net?go-get=1: dial tcp 216.239.37.1:443: i/o timeout
package /x/net: unrecognized import path “/x/net” (https fetch: Get /x/net?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
简述
如果只有少数的几个包依赖,可以使用 /golang/net 之类的库来代替。但是在go module模式下,会出现同样的包的多个版本同时使用的情况。如果引入的框架使用了多个基础包,使用替代方式或者go mod replace的方式来解决简直是一场灾难。
解决方案
本质上go获取包的时候有两个步骤,下面针对这两个步骤分别处理。
2019.09.02更新
只需要配置GOPROXY变量即可,不需要http层面配置代理。
http层面增加代理
添加如下环境变量,来解决https fetch failed问题
$ export http_proxy