后端开发|Golang 本文由go语言教学栏目给大家介绍如何一键解决 go get golang.org/x 包失败问题,希望对需要的朋友有所帮助!一键解决 go get golang.org/x 包失败问题描述当我们使用
go get
go install
go mod
等命令时,会自动下载相应的包或依赖包。但由于众所周知的原因,类似于
golang.org/x/...
的包会出现下载失败的情况。如下所示:
$ go get -u golang.org/x/sysgo get golang.org/x/sys: unrecognized import path "golang.org/x/sys" (https fetch: Get https://golang.org/x/sys?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

解决方式

那我们该如何解决问题呢?毕竟还要制造 bug 的嘛~

手动下载

golang.org/x/...golang.org/x/textgithub.com/golang/text
mkdir $GOPATH/src/golang.org/xcd $GOPATH/src/golang.org/xgit clone git@github.com:golang/text.gitrm -rf text/.git

当如果需要指定版本的时候,该方法就无解了,因为 GitHub 上的镜像仓库多数都没有 tag。并且,手动嘛,程序员怎么能干呢,尤其是依赖的依赖,太多了。

设置代理

如果你有代理,那么可以设置对应的环境变量:

export http_proxy=http://proxyAddress:portexport https_proxy=http://proxyAddress:port
all_proxy
export all_proxy=http://proxyAddress:port

go mod replace

go modulesreplacegolang.org/x
go modulego mod$GOPATHmoduleexport GO111MODULE=on

以下为参考示例:

module example.com/hellorequire (    golang.org/x/text v0.3.0)replace (    golang.org/x/text => github.com/golang/text v0.3.0)

类似的还有 glide、gopm 等这类第三方包管理工具,都不同方式的解决方案提供给我们。

GOPROXY 环境变量

终于到了本文的终极大杀器 —— GOPROXY

Go 1.11go module
GOPROXY
GOPROXYhttps://goproxy.io
export GOPROXY=https://goproxy.io
go moduleexport GO111MODULE=on
GOPATHgo get ...go mod ...
export GOPROXY=
PowerShell
$env:GOPROXY = "https://goproxy.io"
GOPROXY

最后的最后,七牛也出了个国内代理 goproxy.cn 方便国内用户更快的访问不能访问的包,真是良心。