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

如何阻止Heroku部署React项目时自动安装开发依赖Husky

问题根因

npm的prepare是默认会在npm install/npm ci执行时触发的生命周期钩子,无论当前是开发还是生产环境都会运行。而Heroku生产部署环境默认仅安装dependencies下的依赖,不会安装作为开发依赖的Husky,因此执行prepare脚本时找不到husky命令导致构建失败。

可用解决方案(按推荐优先级排序)

方案1:修改prepare脚本,仅在非生产环境执行

直接修改client目录下package.json的prepare脚本,增加环境判断,生产环境跳过Husky安装:

"scripts": {
  // 其余脚本保持不变
  "prepare": "if [ \"$NODE_ENV\" != \"production\" ]; then cd ../ && husky install ./client/.husky; fi"
}

Heroku运行环境为Linux,该shell判断可直接生效,本地开发环境不受影响。如果需要兼容Windows开发环境,可以安装cross-env后改写为跨平台版本。

方案2:配置Heroku禁用prepare脚本执行

直接为你的Heroku应用添加环境变量,让npm全局跳过prepare脚本的执行:

  • 你可以直接在Heroku应用后台的Settings页面的Config Vars栏添加变量:NPM_CONFIG_SCRIPTS_PREPARE=false
  • 也可以通过Heroku CLI执行命令配置:heroku config:set NPM_CONFIG_SCRIPTS_PREPARE=false

方案3:安装client依赖时跳过所有脚本执行

修改根目录package.json的install-client脚本,安装依赖时增加--ignore-scripts参数跳过所有生命周期脚本:

"scripts": {
  // 其余脚本保持不变
  "install-client": "cd client && npm ci --ignore-scripts"
}

注:该方案会跳过client包所有安装相关的生命周期脚本,如果你没有其他需要在依赖安装时执行的脚本可放心使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:57:04