VSCode 配置Go环境,弹出警告“golps”等插件要求下载但下载时超时、失去连接等 解决方案

1. 背景:

下载完GO环境和VSCode的GO配套插件后,试图运行hello world程序,此时VSCode弹出警告:

 

提示有几个go的工具没有下载,于是我点击install 下载:

==》下载时报错,一般是出现超时timeout错误,

输出的报错如下:(我这是提示了三个tool(dlv staticcheck gopls )缺少,所以下载三个)

Tools environment: GOPATH=/Users/apple/go
Installing 3 tools at /Users/apple/go/bin in module mode.
  dlv
  staticcheck
  gopls

Installing github.com/go-delve/delve/cmd/dlv@latest FAILED
{
 "killed": false,
 "code": 1,
 "signal": null,
 "cmd": "/usr/local/bin/go install -v github.com/go-delve/delve/cmd/dlv@latest",
 "stdout": "",
 "stderr": "go: github.com/go-delve/delve/cmd/dlv@latest: module github.com/go-delve/delve/cmd/dlv: Get \"https://proxy.golang.org/github.com/go-delve/delve/cmd/dlv/@v/list\": dial tcp 142.251.42.241:443: i/o timeout\n"
}
Installing honnef.co/go/tools/cmd/staticcheck@latest FAILED
{
 "killed": false,
 "code": 1,
 "signal": null,
 "cmd": "/usr/local/bin/go install -v honnef.co/go/tools/cmd/staticcheck@latest",
 "stdout": "",
 "stderr": "go: honnef.co/go/tools/cmd/staticcheck@latest: module honnef.co/go/tools/cmd/staticcheck: Get \"https://proxy.golang.org/honnef.co/go/tools/cmd/staticcheck/@v/list\": dial tcp 142.251.42.241:443: i/o timeout\n"
}
Installing golang.org/x/tools/gopls@latest FAILED
{
 "killed": false,
 "code": 1,
 "signal": null,
 "cmd": "/usr/local/bin/go install -v golang.org/x/tools/gopls@latest",
 "stdout": "",
 "stderr": "go: golang.org/x/tools/gopls@latest: module golang.org/x/tools/gopls: Get \"https://proxy.golang.org/golang.org/x/tools/gopls/@v/list\": dial tcp 142.251.42.241:443: i/o timeout\n"
}

3 tools failed to install.

dlv: failed to install dlv(github.com/go-delve/delve/cmd/dlv@latest): Error: Command failed: /usr/local/bin/go install -v github.com/go-delve/delve/cmd/dlv@latest
go: github.com/go-delve/delve/cmd/dlv@latest: module github.com/go-delve/delve/cmd/dlv: Get "https://proxy.golang.org/github.com/go-delve/delve/cmd/dlv/@v/list": dial tcp 142.251.42.241:443: i/o timeout
 
staticcheck: failed to install staticcheck(honnef.co/go/tools/cmd/staticcheck@latest): Error: Command failed: /usr/local/bin/go install -v honnef.co/go/tools/cmd/staticcheck@latest
go: honnef.co/go/tools/cmd/staticcheck@latest: module honnef.co/go/tools/cmd/staticcheck: Get "https://proxy.golang.org/honnef.co/go/tools/cmd/staticcheck/@v/list": dial tcp 142.251.42.241:443: i/o timeout
 
gopls: failed to install gopls(golang.org/x/tools/gopls@latest): Error: Command failed: /usr/local/bin/go install -v golang.org/x/tools/gopls@latest
go: golang.org/x/tools/gopls@latest: module golang.org/x/tools/gopls: Get "https://proxy.golang.org/golang.org/x/tools/gopls/@v/list": dial tcp 142.251.42.241:443: i/o timeout

一看全都是timeout错误

2. 解决方案:

ref : vscode 安装go环境无法安装gopls等插件,响应超时、失去连接等问题的简单解决方案_Remember to smile的博客-CSDN博客

干货满满的 Go Modules 和 goproxy.cn - 掘金 

简言之,超时一般是因为连不上golang服务器,所以我们要换一下连接的网站:

方法是:

Step(1) : 在命令行中直接输入以下两条语句:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

含义是:GO111MODULE简言之是一个模块管理器,有了它就不用再像之前一样修改GOPATH了(“Go modules 出现的目的之一就是为了解决 GOPATH 的问题,也就相当于是抛弃 GOPATH 了”),我们通过令GO11MODULE值置为on强制要求使用gomodule来管理模块

事实上,GO1.11就可以使用gomodule来管理模块了,但是,go的1.11和1.12版本的gomodule有些不稳定,但是,go1.13之后的版本都是可以稳定支持gomodule模块管理的

[ps-1]:模块和包的关系是:模块 包含 包,一个模块 (可能)包含有 多个包

[ps-2]查看go版本的语句:(在命令行直接输入)

go version

而后,将拉取go tools的网站通过 GOPROXY 重置为上述的 https://goproxy.cn (国内go网站)

direct参数的含义我没咋看,有需要的放个链接在这:GOPROXY变量中的direct的作用是什么 · Issue #21 · goproxy/goproxy · GitHub

Step(2) : 下载之前没有下好的tools

具体方法是:

刚刚上述的报错中,每个tool对应一组内容,这里我以 dlv为例解释下:

如上图所示,dlv在下载时会有一系列的参数指令,我们只需要关注cmd指令就可以了,即红色框框住的指令:go install -v github.com/go-delve/delve/cmd/dlv@latest 

这个就是我们一会手动要在cmd中敲进去的下载dlv 这个工具的指令:

然后就会下载,就OK了,下载到的位置也可以查看到:首先通过在cmd中输入指令:go env GOPATH 得到GO的路径,然后进入对应路径文件夹,有一个bin目录,下面就是我刚下载的几个tools 

 Step(3) : 记得最后将gomodule管理器重置为off,否则可能会出现奇怪错误

这个步骤存疑,因为我没关也没出啥错误,但是还是建议关闭一下

在cmd中敲入如下指令:

go env -w GO111MODULE=off

可能出现的错误是:运行任何代码都会提示缺 main.go:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值