13

在 Go 1.11 发布之后,我一直在尝试将我的存储库移动到 Go 模块,方法是go.mod在它们的根目录中添加一个文件。

我的一个根库my.host/root的版本是 17.0.1,所以我在它的go.mod文件中写道:

module my.host/root/v17

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

当我尝试创建一个使用我的根库的新 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 有 post-v0 模块路径“my.host/root/v17”

我不知道为什么会发生这种情况。v17.0.1我在文件中明确添加go.mod,但每次尝试都go build用一个版本替换该条目v0.0.0-20180828034419-6bc78016491a,然后该版本失败,因为在该提交时,我的根库的go.mod文件条目确实以 a 结尾,正如它应该的那样。modulev17

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

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

4

2 回答 2

12

我犯了两个错误:

  • 我的初始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.

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

于 2018-08-28T12:48:25.773 回答
9

我得到的错误是: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-restfulv2这样附加 :github.com/emicklei/go-restful/v2在我的go.mod文件中为我修复了它。

于 2019-02-20T11:51:24.727 回答