0

我收到了这个不一致的供应商错误,我是一个 Go 新手。谁能向我解释 go.mod 如何与 vendor/modules.txt 交互?我发现这个问题很有帮助,现在我想知道我是否应该有一个供应商目录。那会是通过运行创建的go mod vendor吗?我继承了这个项目,它已经在 git 中有供应商目录。

这是我的 go.mod 文件的相关部分 -

module mymodule

go 1.17

require (
        gopkg.in/redis.v5 v5.2.9
)

然后是相关的错误信息:

go: inconsistent vendoring
gopkg.in/redis.v5@v5.2.9: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt

在 vendor/modules.txt 我有:

#gopkg.in/redis.v5 v5.2.9
gopkg.in/redis.v5
gopkg.in/redis.v5/internal
gopkg.in/redis.v5/internal/consistenthash
gopkg.in/redis.v5/internal/hashtag
gopkg.in/redis.v5/internal/pool
gopkg.in/redis.v5/internal/proto

对于我的 go.mod 文件中的每个依赖项,我都得到了这个错误,我只包含了一个关于 redis 的错误。

4

1 回答 1

2

go.modvendor/modules.txt(如果存在)必须同步。

每当go.mod发生变化并且有vendor目录时,go mod vendor都需要运行更新vendor目录的内容。

从 Go 1.14 开始,所有直接依赖项(未在 中标记// implicitgo.mod都是“显式的”并相应地进行了标记。vendor/modules.txt

运行后注意包引用后添加go mod vendor的新行:## explicit

#gopkg.in/redis.v5 v5.2.9
## explicit
. . .
于 2022-01-22T00:14:00.803 回答