![](/img/trans.png)
[英]invalid version: module contains a go.mod file, so module path must match major version
[英]Installing a go module fails with `invalid: module contains a go.mod file, so major version must be compatible`
我正在尝试从 Jenkins-X/jx 导入以自定义一些东西。
我真的很陌生
但试图go get./...
失败。
我的 go.mod 文件
module github.com/my-org/my-project
go 1.13
require github.com/jenkins-x/jx v2.0.383
我明白了
... require github.com/jenkins-x/jx: version "v2.0.383" invalid: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2
这是因为 jx 在其 mod 文件中有一些要求
但我不确定我必须做什么才能实际下载该模块。
对于任何希望使用一些简洁的 Jenkins-x 函数进行编译的人,我能够与创建者交谈并发现了一些事情。
1.12.4
go.mod
并使用 jenkins-x/jx 作为要求0.0.0-timestamp-commithash
当您尝试获取主要版本等于或高于v2
的模块,但它们自己的go.mod
文件或您的导入路径缺少必要的/vN
后缀时,会发生此错误。
这是基于语义导入路径:
如果模块是 v2 或更高版本,则模块的主要版本必须作为
/vN
包含在 go.mod 文件中使用的模块路径的末尾
使用您的示例,此命令失败并出现您的问题中的错误:
go get github.com/jenkins-x/jx@v2.0.383
如果您需要v2.xx
,那么您必须将模块获取为(注意@
之前末尾的/v2
):
go get github.com/jenkins-x/jx/v2@v2.0.383
但是jenkins-x/jx
项目v2.0.383
版本的go.mod
文件将模块路径声明为module github.com/jenkins-x/jx
,所以你仍然无法使用/v2
获取它,因为它们不要这样声明。 它将失败:
github.com/jenkins-x/jx/v2@v2.0.383:go.mod 具有非.../v2 模块路径“github.com/jenkins-x/jx”(和.../v2/go. mod 不存在)在版本 v2.0.383
这在以后的版本中得到了修复。 您可以运行go get github.com/jenkins-x/jx/v2@latest
将解析为v2.1.155
。
如您所见,这个问题可能不是您的错。 在这种情况下,您只能要求存储库维护人员修复他们的go.mod
并遵守语义版本控制。
或者,您可以在本地克隆 repo 并使用replace
指令,但这实际上只能在本地工作。
注意:如果项目是v2
或更高版本并且它没有go.mod
文件,则会导致依赖与+incompatible
在 go 中一个大版本 bump 必须确保导入路径与其他大版本不同。 v1
版本不需要任何后缀,所有后续的主要版本 bump 都必须在模块名称中包含主要版本后缀。 在你的情况下应该是:
require github.com/jenkins-x/jx/v2 v2.0.383
然后在您的 go 源文件中使用的导入路径也应该指定。 您可以在此处获得有关此约定的更多信息https://github.com/golang/go/wiki/Modules#why-must-major-version-numbers-appear-in-import-paths
但是一些模块作者不遵循此规则,这与 go 工具的预期不兼容。 如果您对模块具有写入权限,则应修复模块名称,以便主要版本出现在模块定义中。
对于这个特定的包,没有一个主要版本在模块名称上添加所需的后缀。 我想因为它是一个 CLI 工具,所以它不应该被其他模块使用。 无论如何,如果您需要导入它,您可以通过指定与您要依赖的标签相对应的提交 ID 来解决问题:
go get github.com/jenkins-x/jx@c71c08508888ec
但是您可能会遇到其他问题,因为该模块似乎不希望从其他模块中使用。
而且你也将自己升级这个包,go 工具将无法提升版本本身,因为它不知道当前版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.