gopls安装失败主因是代理未生效或模块模式未开启;需检查vscode环境变量继承、正确设置goproxy=https://goproxy.cn,direct、确保gopath/bin在path中,并在含go.mod的目录下使用。

gopls 安装失败,90% 是代理没生效或模块模式未开启,不是插件本身问题。
go env -w GOPROXY 不起作用?检查环境变量继承链
VSCode 启动时若没加载 shell 的环境变量(比如 macOS 上用 zsh 但 VSCode 从 Dock 启动),go env -w 写的配置可能被忽略。终端里 go env GOPROXY 显示正常,但 VSCode 里 gopls 仍连不上 proxy.golang.org,就是这个原因。
- Windows:在「系统属性 → 高级 → 环境变量」中添加用户变量
GOPROXY,值设为https://goproxy.cn,direct,然后彻底关闭并重启 VSCode - macOS/Linux:确保
~/.zshrc或~/.bashrc中有export GOPROXY=https://goproxy.cn,direct,再用终端执行code .启动 VSCode(而不是双击图标) - 验证是否生效:在 VSCode 内置终端运行
go env GOPROXY,输出必须和你设的一致;再跑go list -m -f '{{.Dir}}' golang.org/x/tools,不卡住才算通
go install gopls@latest 报 invalid proxy URL missing scheme: direct
错误信息里出现 missing scheme: direct,说明 GOPROXY 值被写成了 https://goproxy.cn,direct 但中间少了空格或用了中文逗号,或者 direct 前漏了英文逗号。
- 正确写法只有这一种:
https://goproxy.cn,direct(英文逗号,无空格,direct小写且无协议头) - 多个代理按优先级排列,例如公司私有仓库 + 国内镜像 + direct:
https://nexus.example.com/repository/goproxy,https://goproxy.cn,direct - 别用
go env -w GOPROXY=direct单独测试——这会禁用所有代理,gopls直接走原始域名,国内基本必挂
装完 gopls 还是没提示?确认 module root 和文件上下文
gopls 不是全局激活的,它只在明确的 Go module 根目录下工作。单纯打开一个 main.go 文件,即使内容合法,gopls 也只会提供极简支持,跳转、补全大概率失效。
- 必须在含
go.mod的目录下打开 VSCode(哪怕go.mod是空的,用go mod init example.com/foo生成即可) - 如果项目用
vendor,确保go env -w GO111MODULE=on已设置,否则gopls会忽略vendor目录 - 状态栏右下角看不到
Go v1.x和gopls v0.x,说明语言服务器根本没起来——先看输出面板里Go和gopls两个标签页的报错
手动安装后 gopls 版本太旧或命令找不到
新版 Go(1.21+)默认用 go install 而非 go get,且必须带 @latest 或具体版本,否则会装错分支或失败。
- 运行:
go install golang.org/x/tools/gopls@latest(注意是gopls@latest,不是gopls) - 装完检查:
gopls version应该输出类似gopls version v0.15.2;如果报 command not found,说明$GOPATH/bin没进PATH - Windows 用户特别注意:
%GOPATH%\bin必须加到系统 PATH,不能只加到当前 PowerShell 会话的$env:PATH
最易被忽略的是:VSCode 启动方式和 GOPATH/bin 的 PATH 可见性,这两点不解决,改十次代理都没用。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











