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

Node应用中Husky预提交钩子执行失败导致代码无法提交的问题求助

解决 Husky + lint-staged 预提交钩子的 ENOENT 错误

我之前也碰到过一模一样的问题!看你的错误提示 ✖ lint:check failed without output (ENOENT),ENOENT 说白了就是系统找不到你要执行的命令。问题出在你的 lint-staged 配置里——你直接写了 lint:check,但这个是你在 package.json 的 scripts 里定义的 npm 脚本,不是系统全局能直接调用的命令,lint-staged 自然找不到它。

下面是具体的修复步骤,亲测有效:

1. 修正 lint-staged 的任务配置

把 lint-staged 里的任务改成通过 npm run 来调用你的脚本,这样就能正确找到对应的命令了:

"lint-staged": {
  "*.js": [
    "npm run lint:check",
    "npm run lint:fix",
    "npm run prettier:fix"
  ]
}

要是你觉得写 npm run 太啰嗦,也可以直接用 npx 调用工具(不过还是推荐用 npm run,和你定义的脚本保持统一,后续维护更方便):

"lint-staged": {
  "*.js": [
    "npx eslint .",
    "npx eslint --fix .",
    "npx prettier --write ."
  ]
}

2. 先手动测试配置

改完配置后,不用急着提交代码,先在终端执行 npm run pre-commit 手动跑一遍预提交任务。如果这个命令能顺利执行完所有校验,那再去提交代码,应该就能正常通过了。

额外的小优化

我一般会调整任务顺序,先做格式化再做 lint 检查,因为 prettier 格式化后的代码往往能自动修复一些 lint 问题,减少不必要的错误提示:

"lint-staged": {
  "*.js": [
    "npm run prettier:fix",
    "npm run lint:fix",
    "npm run lint:check"
  ]
}

另外别忘了确认项目根目录下有 .eslintrc(或者 .eslintrc.json)和 .prettierrc 这些配置文件,要是没有的话,lint 和格式化工具也可能出问题哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:48:11