首页 > 解决方案 > 将 /vendor 转换为 Go 模块,找不到模块提供包错误

问题描述

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

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

标签: go

解决方案


您不能混合vendor目录行为和模块,每种依赖解析方法都会排除另一种。您可以自己在可以找到它的地方重新发布丢失的包go mod,或者您可以将其直接重定向到模块中现有的供应商源。

要重定向模块的源,请使用go.mod 文件中的replace指令

replace missing/package v0.0.1 => ./vendor/missing/package


推荐阅读