如何在Heroku上部署含Forked GitHub仓库依赖包的Node应用?
解决Heroku部署Forked npm包的问题
咱们先拆解下你遇到的错误:这个ENOENT报错本质是Heroku安装依赖时找不到@babel/runtime里的指定文件,大概率是直接通过Git URL安装fork包时,yarn在Heroku构建环境里没正确处理依赖安装流程,或者旧缓存搞出来的问题。
下面是几个经过验证的正确操作方式,你可以一步步尝试:
方式一:先排查Fork仓库本身的配置
先确认你fork的react-window仓库没问题:
- 检查仓库里的
package.json,确保dependencies和devDependencies完整,没缺@babel/runtime这类关键依赖 - 别把
node_modules或构建产物加到.gitignore里(官方包一般不会,但如果你自己改过配置要注意) - 本地先跑一遍
yarn install && yarn build,确认fork包本身能正常构建,再把修改推到你的GitHub仓库
方式二:用yarn的resolutions强制指定依赖(推荐)
这种方式比直接替换整个包更稳妥,还能避开Git URL安装的缓存坑:
- 在你的Node应用根目录的
package.json里加个resolutions字段,指定react-window用你的fork版本:
"resolutions": { "react-window": "github:myusername/react-window#master" }
- 本地重新执行
yarn install - 把修改后的
package.json和yarn.lock提交到代码仓库,再部署到Heroku
这种方式会让yarn安装时强制把react-window替换成你的fork版本,同时正确处理整个依赖树,减少缓存相关的异常。
方式三:清理Heroku的构建缓存
有时候Heroku的旧缓存会搞乱依赖安装,你可以手动清缓存后重新部署:
- 确保装了Heroku CLI(没装的话先装)
- 执行命令清缓存:
heroku repo:purge_cache -a your-app-name - 重新部署:
git push heroku main
方式四:换用npm安装(如果yarn仍有问题)
要是yarn的Git URL安装一直出问题,可以试试npm:
- 先删掉yarn的锁文件:
rm yarn.lock - 执行安装命令:
npm install react-window@github:myusername/react-window#master - 提交
package-lock.json到仓库,再部署到Heroku
额外注意点
- 确保你fork仓库的指定分支(比如
master)是最新的,且所有依赖都能正常安装 - Heroku默认的yarn版本可能和你本地不一样,可以在
package.json里指定版本,保证环境一致:
"engines": { "yarn": "1.22.19", "node": "16.x" }
内容的提问来源于stack exchange,提问作者PeteMeier
相关产品推荐
相关产品推荐

