go - 如何追踪 Go 模块中的依赖项来自何处?

标签 go go-modules

我有一个 Go 模块,比如 github.com/myorg/mymodule ,我想更新另一个模块中的版本。但是,如果我尝试 go get -u它,我得到一个unexpected module path错误:

> go get -u github.com/myorg/mymodule
go: sourcegraph.com/sourcegraph/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5a3d35773e333c3c1a2c6a746f746b" rel="noreferrer noopener nofollow">[email protected]</a>: parsing go.mod: unexpected module path "github.com/sourcegraph/go-diff"
go get: error loading module requirements

此问题的修复已记录在 https://github.com/sourcegraph/go-diff/issues/35 :该模块需要导入为 github.com/sourcegraph/go-diff/diff ,不是github.com/sourcegraph/go-diff .

问题是,我不知道在哪里应用此修复 - 即哪个依赖项以错误的方式导入此子依赖项。

特别是,go-diff没有出现在go.mod中,仅出现在 go.sum 中(在几个不同的模块中):

> grep go-diff go.mod
> grep go-diff go.sum
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck=

我尝试过使用go mod why ,但这只是报告不需要该模块:

> go mod why sourcegraph.com/sourcegraph/go-diff
# sourcegraph.com/sourcegraph/go-diff
(main module does not need package sourcegraph.com/sourcegraph/go-diff)

更令人费解的是,错误信息中提到了<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1f7870327b7679795f692f312a312e" rel="noreferrer noopener nofollow">[email protected]</a> ,而go.sum包含go-diff v0.5.0 .

总而言之,我怎样才能找到 go-diff 的“错误导入”位置?发生依赖关系以便我可以更新该模块的版本?

最佳答案

我能够通过运行 go get github.com/sourcegraph/go-diff 并在我所在的模块中添加此替换指令(参见 https://github.com/golang/go/wiki/Modules#when-should-i-use-the-replace-directive )来“修补”这个问题正在尝试更新依赖项:

replace sourcegraph.com/sourcegraph/go-diff => github.com/sourcegraph/go-diff v0.5.1

之后,go get -u github.com/myorg/mymodule 运行没有错误。

关于go - 如何追踪 Go 模块中的依赖项来自何处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58613272/

相关文章:

go - 如何将正符号 int32 值转换为负值?

git - 如何将 go pkg 添加到现有仓库?

git - 如何使用语义版本构建 Go Module?

go - 如何在另一个模块中使用 "GOPATH"之外的模块?

go - 如何使用 gocenter remote Artifactory repo 进行本地依赖解析?

go - time.Duration 类型微秒值到毫秒的转换

go - 使用 golang 查询中的 ID 从 Firestore GCP 获取文档

Go模块替换为本地模块的特定版本

go - 在哪里可以找到 golang 模块?

ajax - 从ajax请求并发写入文件