登录
首页 >  Golang >  Go问答

Go 中“不一致的供应商”是什么意思?

来源:stackoverflow

时间:2024-04-19 15:42:34 151浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《Go 中“不一致的供应商”是什么意思?》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

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

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

module mymodule

go 1.17

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

然后是相关的错误消息:

go: inconsistent vendoring
gopkg.in/[email protected]: 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.modvendor/modules.txt(如果存在)必须同步。

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

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

运行 go modvendor 后,请注意在包引用后添加的新行 ##explicit

#gopkg.in/redis.v5 v5.2.9
## explicit
. . .

只是为了添加@rustyx的答案,为了修复此错误,我删除了 vendor 文件夹,然后再次运行 go modvendor,错误消失了。

好了,本文到此结束,带大家了解了《Go 中“不一致的供应商”是什么意思?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>