go - 将 /vendor 转换为 Go 模块,找不到模块提供包错误
问题描述
使用 /vendor 目录转换现有项目以使用 Go 模块(Go 版本 1.12)。我这样做是go mod init
为了生成go.mod
文件。然后我go get -u ./...
填充 go.mod 文件。在此期间,它会尝试在 github 上找到一个不再存在的包。它在我的 /vendor 目录中出售。
在我可以升级我的代码以使用不同的包之前,我怎样才能继续转换为使用模块?也就是说,我想保留一些东西(我在 /vendor 下也有一些修改过的代码),而其他东西由 go 模块处理。
解决方案
您不能混合vendor
目录行为和模块,每种依赖解析方法都会排除另一种。您可以自己在可以找到它的地方重新发布丢失的包go mod
,或者您可以将其直接重定向到模块中现有的供应商源。
要重定向模块的源,请使用go.mod 文件中的replace
指令
replace missing/package v0.0.1 => ./vendor/missing/package
推荐阅读
- python - class_weight = 'balanced' 等价于朴素贝叶斯
- python - How to read several web pages without closing url link
- c++ - 为什么使用“使用”导入构造函数会导致选择不同的重载?
- visual-studio-code - Visual Studio 代码 Intellisense 不适用于 NPM 包
- android - 如何在android中打开应用程序时停止显示推送通知?
- regex - 如何使用正则表达式从主机名中提取 ansible 数字而没有一个特定的
- pyspark - 无法在 Spark 集群上运行 PyPostal
- python - 匹配新字典中的字典键和值
- amazon-web-services - 如何显示 AWS S3 存储桶中的所有图像?
- excel - 宏以在 Mac 上的同一文件夹中另存为新的 excel 工作簿