内容来自对 chatgpt 的咨询

原因

go mod tidy卡住可能有以下几个原因:

网络问题:go mod tidy时需要从网络下载依赖,如果网络不稳定或者因为某些原因访问某些资源地址很慢,可能导致此命令延迟或者卡住。可以尝试使用Go的官方代理或其他信赖的代理,例如设置环境变量 export GOPROXY=https://goproxy.io,direct。

并发问题:go mod tidy在处理时默认会开启并发任务来节省时间,如果需要拉取的依赖模块数量特别多或者计算机资源(比如 CPU 或者内存)不足,可能会导致此命令运行过慢。

解决方案

  1. 你可以在执行 go mod tidy 命令之前启动 go 的 proxy,比如:
export GOPROXY="https://proxy.golang.org,direct"
  1. 可以设置 GOMODCACHE 环境变量,这个环境变量用于指定模块缓存的路径:
export GOMODCACHE="/path/to/cache"
  1. 如果还是无法解决,可以尝试清空模块缓存,然后再次尝试:
go clean -modcache
  1. 可以试着减少并发任务的数量,使用 GOMODMAXPROCS 环境变量来限制 go mod tidy 的并发任务数量,比如:
export GOMODMAXPROCS=1

如果以上方法均无法解决问题,那可能需要对项目进行逐一的依赖排查,看是否有某个特定的依赖导致了问题,这可能需要更深入的调查和研究。