根本原因是GoLand设置的GOPROXY仅影响IDE内部行为,子进程(如go mod download)未继承该环境变量;需通过go env -w GOPROXY和GOSUMDB写入全局配置并重启IDE验证。

GoLand 里 GOPROXY 设置了但 go mod download 还走 proxy.golang.org
根本原因不是 GoLand 没读到配置,而是它启动的子进程(比如 go mod download)没继承到环境变量。GoLand 的 Settings → Go → Go Modules 里填的 GOPROXY 只影响 IDE 自身行为(如索引、补全),不自动注入到终端或构建任务的环境里。
验证方式:在 GoLand 底部 Terminal 执行 go env GOPROXY,如果输出不是你设的值,说明子进程根本没拿到。
- 临时修复:在 Terminal 里手动执行
export GOPROXY="https://goproxy.cn,direct"(macOS/Linux)或$env:GOPROXY="https://goproxy.cn,direct"(PowerShell) - 持久修复:用
go env -w GOPROXY="https://goproxy.cn,direct"写入全局配置,然后重启 GoLand —— 不是“重载项目”,是彻底关闭再打开 - 别信 Settings 界面里的输入框:它只控制 IDE 内部逻辑,和命令行 go 工具链是两套环境
右键 go.mod → “Load Go Modules” 没反应或报错
这个操作本质是调用 go mod tidy,但它会严格检查当前工作目录是否为模块根目录。如果 GoLand 是“打开文件夹”选错了路径(比如打开了子目录或 src 下某层),go.mod 就不会被识别,按钮直接灰掉或执行后无日志。
常见现象:go list -m all 报 go: not in a module,或者 Terminal 里执行 go mod tidy 提示找不到 go.mod。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 确认方式:在 Terminal 中运行
pwd,看路径是否和go.mod所在目录完全一致 - 修复动作:File → Close Project → 重新用 “Open Folder” 选择包含
go.mod的那一层目录 - 别依赖“Reload project”:它只刷新索引,不触发模块加载逻辑
底部状态栏没出现 “Downloading modules…” 提示
GoLand 自动下载依赖有三个硬性前提同时满足才会触发:存在有效的 go.mod、GO111MODULE=on、且 GOPROXY 值可访问(非空且至少一个代理地址能连通)。缺任一条件,状态栏就静默。
最容易被忽略的是 go.mod 文件内容:空文件、只有 module 行没换行、或用了中文逗号分隔 GOPROXY,都会让 GoLand 判定为“无效模块”。
- 检查
GO111MODULE:Terminal 中执行go env GO111MODULE,必须输出on - 检查
go.mod格式:至少包含module example.com/project和go 1.25两行,无 BOM、无不可见字符 - 验证代理连通性:在 Terminal 中执行
curl -I https://goproxy.cn,HTTP 200 才算真正可用;返回 404 或超时,GoLand 会跳过该代理继续下一个,直到 fallback 到direct—— 此时又回到 DNS 解析问题
设置了 GOPROXY 但依然卡在 lookup sum.golang.org: no such host
即使 GOPROXY 走通了,Go 默认仍会单独请求 sum.golang.org 做 checksum 校验。这个域名在国内基本无法解析,导致整个 go mod download 卡住,看起来像代理没生效。
这不是代理配置错误,而是校验链断裂。Go 不会因为 GOPROXY 成功就跳过 GOSUMDB。
- 快速验证:执行
go mod download -x github.com/gin-gonic/gin@v1.12.0,观察日志末尾是否反复出现GET https://sum.golang.org/... - 稳妥解法:执行
go env -w GOSUMDB="sum.golang.org+https://goproxy.cn/sumdb",让校验也走镜像 - 开发环境临时方案:执行
go env -w GOSUMDB=off,但注意这会跳过所有模块完整性校验,仅限本地调试

















