go build一直抱怨:go.mod具有v0后的模块路径

时间:2018-08-28 04:34:13

标签: go go-modules

在Go 1.11发布之后,我一直试图通过在其根目录中添加一个go.mod文件来将我的存储库移至Go模块。

我的一个根库my.host/root的版本为17.0.1,因此我在其go.mod文件中进行了编写:

module my.host/root/v17

我按照Go模块手册中的说明标记了该版本v17.0.1

当我尝试创建一个使用我的根库的新Go项目时,例如:

package main

import root "my.host/root/v17"

func main() {
    root.DoSomething()
}

并尝试编译它,出现以下错误:

  

go:my.host/root@v0.0.0-20180828034419-6bc78016491a:go.mod在修订版6bc78016491a中具有后v0模块路径“ my.host/root/v17”

我不知所措,为什么会这样。我在v17.0.1文件中明确添加了go.mod,但是在go build的每次尝试都将其替换为v0.0.0-20180828034419-6bc78016491a版本的条目,该版本随后失败了,因为在该提交时,{{1} }我的根库的文件go.mod条目确实以module结尾。

作为记录,此提交与标记的v17版本相同。

我在这里做错了什么?我该如何调试这种情况?

2 个答案:

答案 0 :(得分:6)

我犯了两个错误:

  • 我最初的v17.0.0标记将指向go.mod不包含v17导入路径后缀的提交。结果,Go工具似乎将整个v17主版本视为v0 / v1,即使以后的v17标签指向具有正确go.mod指令的提交,因此该提交ID“翻译”。
  • 在我的从属项目的go.mod文件中,我错误地指定了require my.host/root v17.0.1而不是require my.host/root/v17 v17.0.1

在解决了这两个问题之后,一切似乎都恢复了正常,并且运行良好。我希望文档对此有所了解,但是我想这是一个做出贡献的好机会!

答案 1 :(得分:1)

我得到的错误是:github.com/emicklei/go-restful@v0.0.0-20180531035034-3658237ded10: go.mod has post-v0 module path "github.com/emicklei/go-restful/v2" at revision 3658237ded10

github.com/emicklei/go-restful后面加上v2,如下所示:github.com/emicklei/go-restful/v2文件中的go.mod已为我修复。