找到模块但不包含包

Module found but does not contain package

我对 Go 有依赖性问题,正试图了解根本原因,希望有人能给出一些启示。

我在我的 Go 项目中使用 Prometheus go 客户端 ( https://github.com/prometheus/client_golang ) 作为依赖项。这有一个称为 xxhash 的传递依赖项,它可以通过 github.com/cespare/xxhash/v2 的虚拟路径被 mod 感知规则的 Go 版本发现。看起来这个实用程序最近更新为使用 go modules,这由它的 v2 后缀表示。

我运行正在 module mode 中使用 1.17.7 并使用默认的 GoPath。当我尝试 运行 去 mod 整理它时 returns 出现以下错误。

github.com/cespare/xxhash/v2: module github.com/cespare/xxhash/v2@latest found (v2.1.2), but does not contain package github.com/cespare/xxhash/v2

我 运行ning 在 module mode 中,这是一个传递依赖,所以我希望 go 会在 $GOPATH\pkg\mod\cache\download\github.com\cespare\xxhash\v2\@v 中查找该版本.我确实看到那个版本缓存在那个精确的文件夹中。但是我也注意到 go 在 $GOPATH\pkg\mod\github.com\cespare\xxhash\v2@v2.1.2 处为相同的依赖项创建了一个目录,但尚未下载源代码。

我读过其他线程,通过升级到 module aware 的较新版本的 Go 解决了这个问题,或者升级了 Prometheus 客户端的版本,但是在这种情况下我在每个都是最新的。

最初的 GOPATH 配置是使用 Artifactory 形式的镜像代理来解决依赖关系。校验和冲突阻止引入所有依赖项。我恢复到 proxy.golang.org 来解决问题