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

使用Heroku CLI部署生产环境时出现husky未找到错误的解决方案咨询

remote:    > husky install
remote:     
remote: sh: 1: husky: not found
remote: npm ERR! code 127
remote: npm ERR! path /tmp/build_157848d1
remote: npm ERR! command failed
remote: npm ERR! command sh -c husky install
remote: 
remote: npm ERR! A complete log of this run can be found in:
remote: npm ERR!   /tmp/npmcache.seRIW/_logs/2021-09-25T00_40_22_168Z-debug.log
remote: npm ERR! code ELIFECYCLE
remote: npm ERR! syscall spawn
remote: npm ERR! file sh
remote: npm ERR! errno ENOENT
remote: npm ERR! test@1.0.0 heroku-prebuild: `npm i -f`
remote: npm ERR! spawn ENOENT
remote: npm ERR! 
remote: npm ERR! Failed at the test@1.0.0 heroku-prebuild script.
remote: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
核心错误原因

Heroku生产构建环境默认NODE_ENV=production,npm安装依赖时会跳过devDependencies只安装dependencies下的包。而husky作为git钩子工具,通常都会被安装为开发依赖,所以构建阶段执行husky install时找不到对应可执行文件,触发127报错。

排查思路
  • 检查package.json中husky的依赖归属,确认是否位于devDependencies列表中
  • 检查package.json的scripts配置,确认husky install是否配置在heroku-prebuild、postinstall等会在Heroku构建阶段自动触发的钩子中
  • 检查Heroku环境变量配置,确认是否开启了生产模式跳过开发依赖安装的默认配置
解决方案

方案1:修改钩子逻辑,生产环境跳过husky安装(最推荐)

修改package.json中对应的钩子配置,增加环境判断,仅在非生产环境执行husky install,示例配置:

{
  "scripts": {
    "prepare": "node -e \"process.env.NODE_ENV !== 'production' && require('husky').install()\""
  }
}

如果你的husky install是写在heroku-prebuild钩子中,直接删除该命令即可,husky仅需要在本地开发环境初始化时执行,不需要在生产构建阶段运行。

方案2:配置Heroku安装全部依赖(临时验证用)

执行Heroku CLI命令修改环境变量,让构建阶段安装所有开发依赖:
heroku config:set NPM_CONFIG_PRODUCTION=false
该方案会增大生产构建包的体积,不建议长期使用。

方案3:将husky迁移到生产依赖(不推荐)

执行本地命令将husky改为生产依赖:
npm install husky --save
该方案完全没必要将git钩子工具带入生产环境,仅作为极端场景的临时解决手段。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:24:01