必须配置国内go代理(如https://goproxy.cn,direct)才能解决kratos项目依赖下载超时失败问题,否则直连proxy.golang.org将因网络限制导致go mod download等命令失败。

在使用 Kratos 框架初始化项目或执行 go mod download 时,国内用户常因无法直连 proxy.golang.org 导致依赖拉取超时或失败,必须配置可用的 Go 代理才能顺利下载 kratos-layout、etcd/client/v3 等关键依赖。
确认当前 Go 代理状态
运行 go env GOPROXY 查看输出。若返回 https://proxy.golang.org,direct 或为空,则未启用国内代理,需立即配置。
这一步不能跳过——Kratos 项目依赖链深(如 go.etcd.io/etcd/client/v3、github.com/go-kratos/kratos/v2),直连官方代理在多数国内网络环境下会卡在 30 秒超时,导致 kratos new 后 go mod download 失败。
配置 GOPROXY 环境变量(永久生效)
第一步:判断当前 shell 类型,执行 echo $SHELL。若输出 /bin/zsh,编辑 ~/.zshrc;若为 /bin/bash,编辑 ~/.bash_profile。
第二步:向配置文件末尾追加一行:export GOPROXY=https://goproxy.cn,direct。注意不要漏掉 【,direct】,否则私有仓库(如公司内网 Git)将完全不可访问。
第三步:执行 source ~/.zshrc(或 source ~/.bash_profile)使配置立即生效。
验证:再次运行 go env GOPROXY,应输出 https://goproxy.cn,direct。
临时覆盖代理(仅本次命令有效)
方法一:在执行依赖操作前,直接设置环境变量:GOPROXY=https://goproxy.cn,direct go mod download。
方法二:使用 go 命令行参数强制指定:go env -w GOPROXY=https://goproxy.cn,direct。该命令会写入全局 go env,效果等同于永久配置,但无需手动编辑 shell 文件。
注意:如果之前已用 go env -w 设置过其他代理(如 https://goproxy.io),此操作会覆盖旧值,无需先 unset。
验证代理是否真正起效
进入一个空目录,执行 go mod init testproxy && go get github.com/go-kratos/kratos/v2@v2.12.0。
观察终端输出:若看到类似 go: downloading github.com/go-kratos/kratos/v2 v2.12.0 且 5 秒内完成,说明代理已生效;若卡住超过 10 秒并报 timeout 或 no matching versions,请检查网络是否拦截了 https://goproxy.cn 域名(可浏览器访问该地址确认页面是否正常返回 JSON)。











