问题描述
由于一些网络环境问题,当我们使用go get 来获取一些依赖包时,常常会出现 connection refused 等问题,下面获取gomega 包的指令为例:
1 | shell复制代码go get -u github.com/onsi/gomega |
经过等待后,我们会得到如下报错:
1 | bash复制代码go get: module github.com/onsi/gomega: Get "https://proxy.golang.org/github.com/onsi/gomega/@v/list": dial tcp 172.217.27.145:443: connect: connection refused |
解决方案
设置GOPROXY 环境变量
go 安装后,默认的环境变量,我们可以通过go env
指令查看一下:
1 | bash复制代码GO111MODULE="" |
其中,可以看到一个GOPROXY 环境变量,正常情况下,go get
会通过该代理访问github 以完成包的下载。
如何使用呢,值得庆幸的是goproxy.io
这个开源项目为我们提供了一个免费的代理,其官网提供了不同平台的配置方式,以linux 为例,这里提供两种方式进行配置tongguo:
- 通过export 设置环境变量
1 | shell复制代码export GOPROXY=https://goproxy.io,direct |
但是熟悉linux 的同学知道,通过export 设置的环境变量,当我们重新登陆到终端时就会失效,为了一劳永逸的解决问题,建议使用长久生效的方式设置该环境变量
2. 通过go env 设置环境变量
1 | shell复制代码go env -w GOPROXY=https://goproxy.io,direct |
通过这种方式,可以将环境变量写入go 的配置文件中,长久生效
设置系统代理
说到网络问题,那么很自然的就会联想到四个大字——设置代理,上一个方法中,我们是通过为go 自身配置代理来解决网络访问问题的。
我们也可以通过设置系统代理的方式,来解决该问题。
1 | shell复制代码export http_proxy=http://proxyAddress:port |
最终效果
通过配置代理,解决go get
无法为项目下载依赖的问题。
1 | bash复制代码# go get -u github.com/onsi/gomega |
本文转载自: 掘金