go - 转换/vendor 到 Go 模块,找不到提供包错误的模块

标签 go

将带有/vendor 目录的现有项目转换为使用 Go 模块(go 版本 1.12)。我执行 go mod init 生成 go.mod 文件。然后我执行 go get -u ./... 来填充 go.mod 文件。在此期间,它会尝试在 github 上找到一个不再存在的包。它在我的/vendor 目录中出售。

在我可以升级我的代码以使用不同的包之前,我如何才能继续转换为使用模块?也就是说,我想保留一些东西 vendored(我在/vendor 下也有一些修改过的代码),而其他东西则由 go modules 处理。

最佳答案

您不能混合使用 vendor 目录行为和模块,每种依赖性解析方法都相互排斥。您可以自己在 go mod 可以找到它的地方重新发布丢失的包,或者您可以将它直接重定向到模块中现有的 vendored 源。

要重定向模块的源代码,请使用 replace directive在 go.mod 文件中

替换缺失/包 v0.0.1 => ./vendor/missing/package

关于go - 转换/vendor 到 Go 模块,找不到提供包错误的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56010803/

相关文章:

session - 仅在空闲时注销

c++ - 断言是邪恶的吗?

json - Golang 中的动态 JSON 结构未按预期运行

Go mod tidy 删除了 go.mod 中的 linter

go - CGO未在Mac OS上生成头文件

go - Go中调用特定类型的函数

python - Google App Engine mail.Send 在 python2.7/smtplib.py 中返回 "TypeError: unhashable instance"

去不运行 Hello World 的例子

go - 使眼镜蛇命令标志需要

pointers - 初始化方法中返回指针和值的区别