golang unrecognized import path "golang.org/x/net" 完美解决方案

报错复现

dev$ go get -v golang.org/x/net
Fetching https://golang.org/x/net?go-get=1
https fetch failed: Get https://golang.org/x/net?go-get=1: dial tcp 216.239.37.1:443: i/o timeout
package golang.org/x/net: unrecognized import path “golang.org/x/net” (https fetch: Get https://golang.org/x/net?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

简述

如果只有少数的几个包依赖,可以使用 github.com/golang/net 之类的库来代替。但是在go module模式下,会出现同样的包的多个版本同时使用的情况。如果引入的框架使用了多个基础包,使用替代方式或者go mod replace的方式来解决简直是一场灾难。

解决方案

本质上go获取包的时候有两个步骤,下面针对这两个步骤分别处理。
2019.09.02更新
只需要配置GOPROXY变量即可,不需要http层面配置代理。

http层面增加代理

添加如下环境变量,来解决https fetch failed问题

$ export http_proxy=socks5://127.0.0.1:1080		// 梯子的本地端口
$ export https_proxy=$http_proxy

go get层面增加代理

go 1.11版本新增了 GOPROXY 环境变量,go get会根据这个环境变量来决定去哪里取引入库的代码

$ export GOPROXY=https://goproxy.io

其中,https://goproxy.io 是一个goproxy.io这个开源项目提供的公开代理服务。

参考

https://shockerli.net/post/go-get-golang-org-x-solution/
http://www.topcaver.com/go-get-through-socks5-proxy

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值