Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > golang go get命令无响应

golang如何解决go get命令无响应问题

作者:Mars'Ares

文章介绍了在Go语言中处理由于官方库被封禁导致依赖下载失败的方法,包括设置代理和直接克隆依赖包到GOPATH/src下

golang go get命令无响应问题

操作

go get -v github.com/golang/net

现象

go get github.com/golang/net: module github.com/golang/net: 
Get https://proxy.golang.org/github.com/golang/net/@v/list: 
dial tcp 216.58.220.209:443: connectex: 
A connection attempt failed because the connected party did not properly respond after a period of time,
 or established connection failed because connected host has failed to respond.

原因

所下载的库依赖有官方库,而官方被封禁网导致。

方法

法一:设置代理

go env -w GOPROXY=https://goproxy.cn

##设置完后 重新执行即可go get
ps:
go1.11发布后,还发布一个goproxy提供代理服务,goproxy.cn是专门服务于中国的,依赖于七牛云
github地址: https://github.com/goproxy

法二:git clone 依赖包直接到GOPATH/src/下

cd /d  %GOPATH%/src/
git clone https://github.com/golang/net.git
ps:https://github.com/golang上为golang.org的镜像依赖包
所以,可以直接使用git clone代替go get

go get 指令没有反应/出错/超时

使用GitHub上的eclipse/paho.mqtt.golang包时,长时间无响应后,弹出以下错误提示

$ go get github.com/eclipse/paho.mqtt.golang

package golang.org/x/net/proxy: unrecognized import path “golang.org/x/net/proxy” (https fetch: Get https://golang.org/x/net/proxy?go-get=1: dial tcp 216.239.37.1:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)

出现这个问题的原因主要还是我们所使用网络的特殊性,导致go get无法拉取我们所需包的源码,从goproxy的官网上的使用分布图就能很明显的看出来:

此时修改一下环境变量启动GOPROXY,再用go get -v即可,-v参数能够显示go get执行的进度

# Enable the go modules feature
export GO111MODULE=on
# Set the GOPROXY environment variable
export GOPROXY=https://goproxy.io

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文