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

Husky v4.3.8 pre-commit钩子未触发问题求助

Husky v4.3.8 pre-commit钩子不生效的排查方向
  • Husky钩子未完成安装
    Husky v4依赖自动在.git/hooks目录生成钩子脚本,如果安装过程中断或之前卸载过Husky,可能导致该目录下的pre-commit文件缺失或无效。可以手动触发钩子安装:执行npx husky install,然后检查.git/hooks/pre-commit文件是否存在,Linux/macOS环境下还需确保文件具备可执行权限(可执行chmod +x .git/hooks/pre-commit)。

  • Git钩子路径被篡改
    若Git的core.hooksPath配置被修改为非默认的.git/hooks,Husky的钩子会无法被Git识别。执行git config core.hooksPath查看当前路径,若输出不是.git/hooks,执行git config core.hooksPath .git/hooks恢复默认路径。

  • package.json配置存在语法错误
    检查你的配置中多余的逗号:比如"pre-commit": "lint-staged",末尾的逗号(如果是hooks对象的最后一个属性)会导致JSON解析失败,Husky无法读取配置。修正后的配置应为:

    "lint-staged": {
      "*": "yarn run typecheck"
    },
    "husky": {
      "hooks": {
        "pre-commit": "lint-staged"
      }
    }
    
  • 依赖冲突或安装不完整
    项目中可能存在多版本Husky,或依赖安装异常。删除node_modules和yarn.lock文件,重新执行yarn install,确保Husky v4.3.8被正确安装到项目中。

  • Git暂存区无待提交文件
    lint-staged默认仅检查暂存区的文件,若当前没有任何文件被暂存(git status显示无变更),pre-commit钩子执行时lint-staged不会有任何输出,看起来像是钩子没触发。可以修改一个文件并执行git add后再尝试commit。

  • 添加日志排查执行情况
    在husky的pre-commit钩子中添加--verbose参数,修改配置为:

    "husky": {
      "hooks": {
        "pre-commit": "lint-staged --verbose"
      }
    }
    

    再次执行commit,若终端有lint-staged的日志输出,说明钩子已触发,问题出在typecheck的执行逻辑;若无任何输出,说明钩子未被Git调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:58:29