当前位置:   article > 正文

VSCode 配置Go环境,弹出警告“golps”等插件要求下载但下载时超时、失去连接等 解决方案_gopls: failed to install gopls(golang.org/x/tools/

gopls: failed to install gopls(golang.org/x/tools/gopls@latest): error: comm

1. 背景:

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

 

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

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

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

  1. Tools environment: GOPATH=/Users/apple/go
  2. Installing 3 tools at /Users/apple/go/bin in module mode.
  3. dlv
  4. staticcheck
  5. gopls
  6. Installing github.com/go-delve/delve/cmd/dlv@latest FAILED
  7. {
  8. "killed": false,
  9. "code": 1,
  10. "signal": null,
  11. "cmd": "/usr/local/bin/go install -v github.com/go-delve/delve/cmd/dlv@latest",
  12. "stdout": "",
  13. "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"
  14. }
  15. Installing honnef.co/go/tools/cmd/staticcheck@latest FAILED
  16. {
  17. "killed": false,
  18. "code": 1,
  19. "signal": null,
  20. "cmd": "/usr/local/bin/go install -v honnef.co/go/tools/cmd/staticcheck@latest",
  21. "stdout": "",
  22. "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"
  23. }
  24. Installing golang.org/x/tools/gopls@latest FAILED
  25. {
  26. "killed": false,
  27. "code": 1,
  28. "signal": null,
  29. "cmd": "/usr/local/bin/go install -v golang.org/x/tools/gopls@latest",
  30. "stdout": "",
  31. "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"
  32. }
  33. 3 tools failed to install.
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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) : 在命令行中直接输入以下两条语句:

  1. go env -w GO111MODULE=on
  2. 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:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/177889?site
推荐阅读
相关标签
  

闽ICP备14008679号