当前位置: > > > > Go 中“不一致的供应商”是什么意思?
Go 中“不一致的供应商”是什么意思?
来源:stackoverflow
2024-04-19 15:42:34
0浏览
收藏
目前米云上已经有很多关于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.mod 和 vendor/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知识!
