我遇到了这个不一致的供应商错误,而且我是一个完全的 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
)
Run Code Online (Sandbox Code Playgroud)
然后是相关的错误信息:
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
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
值得一提的是,我的 go.mod 文件中的每个依赖项都会出现此错误,我只是包含了有关 redis 的依赖项。
go.mod和vendor/modules.txt(如果存在)必须同步。
每当目录go.mod有变化时vendor,go mod vendor都需要运行来更新vendor目录的内容。
所有直接依赖项(未// implicit在 中标记go.mod)都是“显式”的,并vendor/modules.txt从 Go 1.14 开始进行相应标记。
运行后,请注意在包引用后添加的go mod vendor新行:## explicit
#gopkg.in/redis.v5 v5.2.9
## explicit
. . .
Run Code Online (Sandbox Code Playgroud)
只是为了添加@rustyx的答案,为了修复这个错误,我删除了该vendor文件夹,然后再次运行go mod vendor,错误消失了。
| 归档时间: |
|
| 查看次数: |
13815 次 |
| 最近记录: |