go get报错解决办法:go.mod at revision v0.0.0: unknown revision v0.0.0
一、现象描述
使用go get
给项目添加依赖的时候,报错出现go.mod at revision v0.0.0: unknown revision v0.0.0
二、问题排查
看了一下go.mod,里边确实有个依赖声明的版本是v0.0.0
,查阅后得知这样声明没有问题,所以排除项目本身的问题,将问题定位到go
库或者go env
配置的问题。最后排除了cache
的问题,发现是GOPROXXY
环境变量设置导致的。
1、cache
在使用go get
添加其他的依赖比如gin
官方的依赖,仍然报告上一个v0.0.0
的依赖的错误,所以怀疑是cache
的问题。在网上查到以下解决方案:
删除文件夹 ($GOPATH)/pkg/mod/cache
执行 go mod why
($GOPATH)/pkg/mod/cache
这个目录存储了Go模块下载的源代码缓存,删除后,Go在下次需要依赖时会重新下载。这样可以解决缓存的代码文件损坏或不完整
、依赖的版本标签在仓库中被移除
、网络问题比如代理设置或防火墙规则变化
这三个问题。
go mod why
命令用于显示一个模块为何是项目中的依赖。Go会重新解析整个模块依赖树,对缺失或过期模块重新下载,如果在解析过程中发现依赖不完整或有误,会尝试修复这些问题。
执行后发现问题依然存在,但解决了执行go get
时会报别的依赖的错误的问题。
2、GOPROXY
这才是本次问题的原因所在,GOPROXY
设置失败导致go的解析出现问题。应该配置为:
go env -w GOPROXY=https://goproxy.cn
再次执行go run main.go
,问题解决。