You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地构建正常但Heroku部署Node.js项目构建失败

问题根因

本次Heroku构建失败的直接原因是npm ci安装依赖时校验失败:package.json与package-lock.json记录的依赖版本不同步,具体冲突点为fs-capacitor——你在依赖配置和版本强制规则里指定了fs-capacitor@6.2.0,但锁文件中记录的间接依赖要求安装fs-capacitor@2.0.4,版本校验不通过直接终止了构建流程。
5天前同代码能部署成功,是因为当时构建命中了Heroku端存储的旧依赖缓存,跳过了严格的全量锁文件校验;本次构建时Heroku自动将Node版本升级到了16.15.1,和之前缓存对应的Node版本不一致,缓存被强制清空,走了全新的干净安装流程,才把锁文件不一致的问题暴露出来。
注意:你在preinstall脚本里配置的npx npm-force-resolutions是适配yarn resolutions字段的第三方工具,在Heroku的npm ci构建流程中不会正常生效:npm ci不会动态修改锁文件,preinstall阶段做的版本修改无法通过前置的锁文件一致性校验。

修复步骤

按顺序操作即可解决问题:

  • 删除本地项目根目录下的node_modules文件夹和旧的package-lock.json文件
  • 打开package.json,删除"preinstall": "npx npm-force-resolutions"这行脚本配置——npm 8.x及以上版本已经原生支持依赖版本强制,不需要第三方工具实现
  • 将package.json中的resolutions字段替换为npm原生的overrides字段,原有版本规则保持不变:
"overrides": {
  "fs-capacitor": "6.2.0",
  "graphql-upload": "^11.0.0"
}
  • 在本地项目根目录执行npm install,生成和当前package.json完全同步的全新package-lock.json文件
  • 本地执行npm run build确认构建流程正常、服务可正常启动后,将所有变更(修改后的package.json、新生成的package-lock.json)提交到Git仓库
  • 重新执行git push heroku master即可正常完成部署
  • 如果仍遇到缓存类异常,可以先清空Heroku端的构建缓存,再重新推送代码

内容的提问来源于stack exchange,提问作者Jungwoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 14:39:07