报错
如果一个大仓模式下,要导入同一个仓库的另外一个 go mod项目,没有打tag的情况下,通常会报如下错误:
$ go get git.xxxx.com/server/agora-service/sdk@latest
go: git.xxxx.com/server/agora-service/sdk@latest: no matching versions for query "latest"
大仓项目结构:
├── cmd
│ └── agora_service
├── configs
│ └── config.yaml
├── docs
│ └── arch-seq.jpg
├── go.mod
├── go.sum
├── internal
│ ├── conf
│ ├── controller
│ ├── dao
│ ├── mq
│ ├── server
│ └── service
└── sdk
├── armodel
├── arsdk
├── filter
├── go.mod
└── go.sum
解决办法
使用go work(推荐)
升级到1.18,即可解决上述问题。如果无法升级,请使用 tag。
打上tag要包含模块名
如下图,打tag的时候要带上 sdk 才行。
好处是所有go版本都支持
,坏处是 每次sdk有改动都需要打tag
最新代码才能生效。
清理 go mod 缓存
如果上面2中都不行,试着清理一下 go mod 缓存:
go clean -modcache
go mod 缓存路径可以通过 go env
找到:
参考:
- https://stackoverflow.com/questions/67445795/go-build-error-go-no-matching-versions-for-query-latest