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的博客-优快云博客

干货满满的 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:

Go 开发中,`gopls` 是官方提供的语言服务器,用于支持诸如 VS Code、GoLand 等编辑器的智能代码补全、跳转定义、重构等功能。当用户尝试安装 `gopls` ,可能会遇到多种原因导致的安装失败问题。 ### 常见安装失败原因 1. **网络问题**:由于 `gopls` 依赖的模块托管在 `golang.org/x` 上,部分地区的用户可能会因网络限制无法访问该域名。 2. **代理配置不当**:未正确配置 Go 模块代理,导致依赖无法下载。 3. **Go 环境配置问题**:如 `GOBIN` 未加入系统 `PATH`,或 `GOPROXY` 设置错误。 4. **权限问题**:在某些系统上(如 Linux 或 macOS),可能需要使用 `sudo` 权限才能写入全局路径。 5. **Go 版本不兼容**:某些版本的 Go 与 `gopls` 不兼容,尤其是在使用较旧版本。 ### 解决方法 #### 1. 使用 Go 模块代理 设置 Go 模块代理可以绕过对 `golang.org/x` 的直接访问,推荐使用国内镜像,例如: ```bash go env -w GOPROXY=https://goproxy.cn,direct ``` 此命令将代理设置为七牛云的 Go 模块镜像,提高下载速度并解决网络问题。 #### 2. 使用 `-v` 参数安装并查看详细日志 执行以下命令以获取详细的安装日志,有助于排查具体失败原因: ```bash go install -v golang.org/x/tools/gopls@latest ``` #### 3. 使用 `sudo` 安装(适用于 Linux/macOS) 如果提示权限不足,可尝试使用管理员权限安装: ```bash sudo go install -v golang.org/x/tools/gopls@latest ``` #### 4. 检查 `GOBIN` 是否加入系统 `PATH` 确保 `GOBIN` 路径已添加到环境变量中。可以通过以下命令查看当前 `GOBIN` 设置: ```bash go env GOBIN ``` 默认情况下为 `$HOME/go/bin`,将其加入 `PATH`: ```bash export PATH=$PATH:$(go env GOPATH)/bin ``` #### 5. 更新 Go 到最新稳定版本 某些旧版本的 Go(如 1.16 及之前)可能与 `gopls` 不兼容。建议更新至 Go 1.18 或更高版本: ```bash # 查看当前版本 go version # 若需更新,请前往 https://golang.org/dl/ 下载最新版本 ``` #### 6. 清理模块缓存后重试 有模块缓存损坏也会导致安装失败,可尝试清理缓存: ```bash go clean -modcache ``` 再重新执行安装命令。 ### 示例安装流程 ```bash # 设置代理 go env -w GOPROXY=https://goproxy.cn,direct # 清理缓存 go clean -modcache # 安装 gopls go install -v golang.org/x/tools/gopls@latest ``` 验证是否安装成功: ```bash gopls version ``` 若输出版本号,则表示安装成功。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值