如何强制 go mod 接受声明其路径与其 go.mod 不同的模块?

vuc*_*uco 9 go go-modules

当我运行时go mod tidy,它会中断,因为我的项目导入的包使用 path 导入另一个包github.com/coreos/bbolt,但是当它从该路径获取包时,它go.mod说它的路径是go.etcd.io/bbolt

问题是导入包和导入包都是第三方包。我知道我可以编辑 go 模块缓存来修复它,但是当这些软件包的新版本可用时,修复它将是一个真正的地狱。

部分回显消息如下所示:

    github.com/coreos/etcd/client tested by
    github.com/coreos/etcd/client.test imports
    github.com/coreos/etcd/integration imports
    github.com/coreos/etcd/etcdserver imports
    github.com/coreos/etcd/mvcc/backend imports
    github.com/coreos/bbolt: github.com/coreos/bbolt@v1.3.5: parsing go.mod:
    module declares its path as: go.etcd.io/bbolt
            but was required as: github.com/coreos/bbolt

Run Code Online (Sandbox Code Playgroud)

那么,我该如何解决或解决这种情况呢?

dev*_*per 7

您可以使用替换指令来修复此解决方案

只需添加:

replace github.com/coreos/bbolt v1.3.5 => go.etcd.io/bbolt v1.3.5
Run Code Online (Sandbox Code Playgroud)

go.mod在你的文件末尾