VSCode中GOPROXY未生效的典型表现是执行go list -m -f'{{.Dir}}' golang.org/x/tools卡住或报直连proxy.golang.org超时错误,根本原因是环境变量未被VSCode进程继承,须在shell配置文件(如~/.zshrc)和VSCode settings.json中双写GOPROXY=https://goproxy.cn,direct,并关闭系统及VSCode内置HTTP代理、重启全局VSCode进程。

VSCode里GOPROXY没生效的典型表现
执行 go list -m -f'{{.Dir}}' golang.org/x/tools 卡住,或报错 dial tcp 34.64.4.113:443: connectex: A connection attempt failed...,说明请求仍直连了官方 proxy(proxy.golang.org)而非你设的国内镜像。这不是插件问题,而是环境变量未被 VSCode 正确继承——尤其在 macOS/Linux 下,VSCode 若非从终端启动,~/.zshrc 或 ~/.bash_profile 里的 export GOPROXY=... 根本不会加载。
必须同时配置的两个地方
只改 go env -w GOPROXY=... 不够,只改 VSCode 设置里的 go.toolsEnvVars 也不稳。要双保险:
- 在 shell 配置文件中写死:
export GOPROXY=https://goproxy.cn,direct(macOS/Linux 加到~/.zshrc;Windows WSL 同理;PowerShell 加$env:GOPROXY="https://goproxy.cn,direct"到$PROFILE) - 在 VSCode 用户设置(
settings.json)中补一句:"go.toolsEnvVars": {"GOPROXY": "https://goproxy.cn,direct"} - 改完后必须重启 VSCode 全局进程(不是仅关终端、不是重载窗口),否则旧环境还在
direct 不能少,GOSUMDB 建议关掉
direct 是兜底开关,没有它,私有模块(如 git.corp.example.com/internal)会直接 404。而 GOSUMDB 默认指向 sum.golang.org,在国内常超时,且和 GOPROXY 镜像不协同:
- 执行
go env -w GOSUMDB=off关闭校验(开发阶段安全可接受) - 若坚持启用校验,可设为
go env -w GOSUMDB=sum.golang.google.cn,但注意部分镜像(如阿里云mirrors.aliyun.com/goproxy/)不支持/@v/vX.Y.Z.info路由,会导致gopls解析失败 -
GONOPROXY用于私有域名,如go env -w GONOPROXY="*.corp.example.com",它优先级高于GOPROXY,但通配符不匹配路径
VSCode 自身代理设置要清空
VSCode 内置的 HTTP Proxy 设置(http.proxy)和 Go 的 GOPROXY 完全无关,反而会冲突:
- 打开设置 → 搜索
proxy→ 找到HTTP Proxy项 - 确保其值为空,或明确设为
off(不要留http://127.0.0.1:7890这类本地代理) - 同时检查系统级代理:Windows 在「设置 → 网络和 Internet → 代理」里关闭手动代理;macOS 在「网络 → 高级 → 代理」里清空
- 环境变量
HTTP_PROXY/HTTPS_PROXY也建议删除,它们会劫持所有 go 子进程,绕过你精心配的GOPROXY
VSCode 启动时是否真正加载了你设的 GOPROXY,比“怎么配”更关键。很多人反复重装插件、换镜像,却漏掉了 shell 配置未生效、VSCode 未彻底重启、或系统代理静默干扰这三处。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











