执行go mod tidy报错‘no matching versions for query "latest"’求助
问题:Go模块缓存内执行
go mod tidy报错找不到mock模块版本 环境信息
Go版本
go version go1.19.4 linux/amd64
Go环境变量
GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/home/ishmeets/.cache/go-build" GOENV="/home/ishmeets/.config/go/env" GOEXE="" GOEXPERIMENT="" GOFLAGS="-modcacherw" GOHOSTARCH="amd64" GOHOSTOS="linux" GOINSECURE="" GOMODCACHE="/home/ishmeets/go/pkg/mod" GONOPROXY="xxx" GONOSUMDB="xxx" GOOS="linux" GOPATH="/home/ishmeets/go" GOPRIVATE="xxx" GOPROXY="https://proxy.golang.org,direct" GOROOT="/home/ishmeets/.local" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/home/ishmeets/.local/pkg/tool/linux_amd64" GOVCS="" GOVERSION="go1.19.4" GCCGO="gccgo" GOAMD64="v1" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="/home/ishmeets/go/pkg/mod/xxx/xxx/fabric-mgmt-api@v0.0.0-20230119053658-acd5a1e86128/go.mod" GOWORK="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build2990676511=/tmp/go-build -gno-record-gcc-switches"
报错信息
在模块缓存目录下执行go mod tidy时,出现以下错误:
xxx/xxx/fabric-mgmt-api/internal/app/network-mgmt/xxx/primitives/mock: no matching versions for query "latest"
mock文件已放置在对应mock包的目录下,但错误依旧。
已尝试的操作
- 将仓库复制到GOMODCACHE外执行
go mod tidy成功:cp -a ~/go/pkg/mod/xxx/xxx/fabric-mgmt-api@v0.0.0-20230119053658-acd5a1e86128 ~/workspace/ cd ~/workspace/fabric-mgmt-api@v0.0.0-20230119053658-acd5a1e86128 && go mod tidy - 使用Go 1.18版本执行
go mod tidy成功。 - 使用Go 1.20.1版本执行
go mod tidy失败。
解决方案建议
- 不在模块缓存内操作:模块缓存是Go管理的专属区域,即便设置了
-modcacherw,Go在缓存内处理模块的逻辑和普通工作目录有差异,优先在独立工作目录操作模块。 - 校验包导入路径:Go 1.19+对模块内本地包的引用检查更严格,确认mock包的导入路径和模块路径完全匹配,避免拼写或路径格式错误。
- 清理缓存并重拉模块:执行
go clean -modcache清理现有缓存,再通过go get重新拉取目标模块,之后在工作目录执行go mod tidy。 - 检查私有模块配置:如果mock包属于私有模块,确认
GOPRIVATE已正确包含对应模块前缀,防止Go尝试从公共代理拉取不存在的版本。 - 用replace指令临时修复:在
go.mod中添加replace指令,将mock包路径指向本地目录:
之后再执行replace xxx/xxx/fabric-mgmt-api/internal/app/network-mgmt/xxx/primitives/mock => ./internal/app/network-mgmt/xxx/primitives/mockgo mod tidy。
内容的提问来源于stack exchange,提问作者Ishmeet
相关产品推荐
相关产品推荐

