go get 命令下载gin包时出现报错
使用go get 命令下载gin框架时报错,截图如下:
报错产生原因有两个:
第一个:通过查找原因,gin的个别包无法下载是被墙了
第二个:go在1.13版本后,默认开启了GOSUMDB=sum.golang.org,而这个网址sum.golang.org 在国内是无法访问,故需要关闭
解决办法:
第一步:关闭GOSUMDB 命令:【go env -w GOSUMDB=off】
第二步:更换国内源,彻底解决配置代理也无法下载个别包的问题 (因为在执行go get github.com/gin-gonic/gin时我是配置了goproxy的,依旧无法下载个别包,所以彻底更换国内源)
命令:【go env -w GO111MODULE=on】
【go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct】
设置完后结果呈现:
总结:
关闭GOSUMDB=off,更换国内代理源即可完美解决下载问题,设置完后,再执行【go get github.com/gin-gonic/gin】,不到5秒钟,所有gin相关的包均下载成功,也无任何报错
后续反馈:
经过上述步骤设置后,虽然需要的文件能很快下载下来,但是没有出现在src目录下,而是出现在pkg目录下,因此在goland上无法直接引用gin包中的内容
基于此,我们需要设置下go module
设置完go module后,在需要调用gin包的文件夹下执行命令【go mod init gin】,就会在这个文件夹下自动生成一个go.mod文件
这个时候在代码操作区输入gin,还无法将相关的包自动带出
最后一步:在命令操作区输入命令【go get github.com/gin-gonic/gin】,执行这步就是导入包,将包从pkg目录引入到src目录下
执行完后,在代码操作区再输入gin,发现跟gin相关的包全都能自动带出
go get 下载包的问题完美解决
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二种解决办法:不需要启用go module
先看报错,缺少什么包,就git clone什么包
进入的gopath的src目录下创建一个文件夹:名称为golang.org,然后进入golang.org后再创建一个文件夹x
拉取 github上的golang库包,命令如下:
git clone https://github.com/golang/sys.git git clone https://github.com/golang/net.git git clone https://github.com/golang/text.git t git clone https://github.com/golang/lint.git git clone https://github.com/golang/tools.git git clone https://github.com/golang/crypto.git
创建文件夹google.golang.org,进入文件夹后再创建protobuf文件夹,执行如下命令,将git clone的内容拷贝至目录下
git clone https://github.com/protocolbuffers/protobuf-go
将net、sys、tools三个文件夹放到$GOPATH/src/golang.org/x目录下
此时再执行【go get github.com/gin-gonic/gin】
两种解决办法,根据情况选择