问题描述
当我们使用go get, go run, go build
等相关命令时下载golang.org/x/...
这样的包时,可能出现下载失败的情况:
go: golang.org/x/text@v0.3.0: unrecognized import path "golang.org/x/text" (https fetch: Get https://golang.org/x/text?go-get=1: dial tcp 216.239.37.1:443: connectex: A connection attempt failed because the connected party did not properlyrespond after a period of time, or established connection failed because connected host has failed to respond.)
解决方法
go modules + goproxy
从 Go 1.11 版本开始,新增 go modules
用于解决包依赖管理问题。
关于 go modules 的知识点,参考:
使用go mod 管理项目,不必把项目放到$GOPATH
目录下,你可以把项目代码移动到硬盘的任意目录下(注意如果你的代码库在$GOPATH
目录中,go modules
功能是默认不会开启的)。对于项目使用go mod模式(即使用go mod init 初始化过项目的),且项目目录不在$GOPATH
目录下。使用goproxy
来解决下载包超时问题。
通过设置GOPROXY
环境变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。这里感谢http://goproxy.io/这个开源项目。
image.png
对于使用vscode
开发go项目的同学,可以下载微软的PowerShell
(可理解为升级版的cmd.exe,win7用户需手动下载,win10用户自带)。附下载地址
image.png
在PowerShell中设置GOPROXY环境变量
$env:GOPROXY = "https://goproxy.io"
image.png
再在项目下按需
go run
或go build
等即可成功下载之前超时的第三方包
对于使用goland IDE的同学
image.png
如下设置后,
重启IDE
,打开Teminal
后再项目根目录下按需go run或go build等即可成功下载之前超时的第三方包image.png
``