"inconsistent vendoring" 在 Go 中是什么意思?
What does "inconsistent vendoring" mean in Go?
我遇到了这个不一致的供应商错误,我是一个完全的 Go 新手。任何人都可以向我解释 go.mod 如何与 vendor/modules.txt 交互吗?我发现 很有帮助,现在我想知道我是否应该拥有一个供应商目录。 运行 go mod vendor
会创建吗?我继承了这个项目,它已经在 git.
中有 vendor 目录
这是我的 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 的那个。
go.mod
和 vendor/modules.txt
(如果存在)必须同步。
每当go.mod
发生变化且有vendor
目录时,go mod vendor
需要运行更新vendor
目录的内容。
所有直接依赖项(在 go.mod
中未标记 // implicit
)都是“明确的”,并在从 Go 1.14 开始的 vendor/modules.txt
中相应地标记。
在 运行 go mod vendor
之后注意在包引用之后添加的新行 ## explicit
:
#gopkg.in/redis.v5 v5.2.9
## explicit
. . .
只是添加到@rustyx 的回答中,为了修复此错误,我删除了 vendor
文件夹,然后我再次运行 go mod vendor
,错误消失。
对我来说,更新版本解决了这个问题。我是 运行ning go1.16,我更新到 go1.18.2。在更新之前,我尝试去 mod vendor 并且更新 modules.txt 也没有用,我开始通过 运行ning 忽略 vendor 目录
go build -mod=mod 构建应用程序或 go 运行 -mod=mod main.go to 运行 main.go 文件
我遇到了这个不一致的供应商错误,我是一个完全的 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 的那个。
go.mod
和 vendor/modules.txt
(如果存在)必须同步。
每当go.mod
发生变化且有vendor
目录时,go mod vendor
需要运行更新vendor
目录的内容。
所有直接依赖项(在 go.mod
中未标记 // implicit
)都是“明确的”,并在从 Go 1.14 开始的 vendor/modules.txt
中相应地标记。
在 运行 go mod vendor
之后注意在包引用之后添加的新行 ## explicit
:
#gopkg.in/redis.v5 v5.2.9
## explicit
. . .
只是添加到@rustyx 的回答中,为了修复此错误,我删除了 vendor
文件夹,然后我再次运行 go mod vendor
,错误消失。
对我来说,更新版本解决了这个问题。我是 运行ning go1.16,我更新到 go1.18.2。在更新之前,我尝试去 mod vendor 并且更新 modules.txt 也没有用,我开始通过 运行ning 忽略 vendor 目录 go build -mod=mod 构建应用程序或 go 运行 -mod=mod main.go to 运行 main.go 文件