部署Heroku Web应用提示找不到@heroku/buildpack-registry模块如何解决
问题原因
该报错的核心诱因是错误地将Heroku CLI相关工具包作为Web项目的生产依赖引入,引发了模块路径冲突:
@heroku/buildpack-registry、@heroku-cli/plugin-buildpacks、heroku这三个包均属于Heroku命令行工具的配套依赖,仅用于本地操作Heroku平台,Web应用本身运行完全不需要这些依赖,强行引入会和Heroku平台端的构建环境产生模块冲突- 即使在package.json中声明了对应依赖,也可能因为本地依赖缓存、Heroku端构建缓存、锁文件版本不匹配的问题,导致模块无法被正常识别
解决方案
按以下步骤操作即可解决:
- 第一步:移除项目中冗余的Heroku相关依赖,执行命令:
npm uninstall @heroku-cli/plugin-buildpacks @heroku/buildpack-registry heroku - 第二步:清理本地依赖缓存,删除项目根目录下的
node_modules文件夹、package-lock.json(如果用yarn则删除yarn.lock),重新执行npm install生成新的依赖锁文件 - 第三步:全局检查项目代码(尤其是入口文件index.js、路由文件),删除所有引入上述Heroku工具包的
require/import语句,这类代码均为调试操作时的冗余内容,业务逻辑不需要 - 第四步:清理Heroku端的构建缓存,执行本地Heroku CLI命令:
heroku builds:cache:purge -a 替换为你的Heroku应用名称 - 完成上述操作后重新推送代码到Heroku部署即可
特殊场景适配
如果确实有业务需求需要在项目代码中调用@heroku/buildpack-registry的能力,可以执行npm install @heroku/buildpack-registry --save重新安装该包,确认代码中引入路径的大小写完全匹配即可。
内容的提问来源于stack exchange,提问作者moinabyssinia
相关产品推荐
相关产品推荐

