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

新版Husky Hooks在Linux系统运行异常,代码提交时报错如何解决?

问题原因
  • 钩子逻辑归属错误:你将本应放在pre-commit钩子的代码校验逻辑写在了commit-msg钩子文件中,commit-msg钩子的核心作用是校验提交信息格式,你修改后丢失了原有的commitlint调用逻辑,同时代码校验的触发时机也不符合预期。
  • husky默认生成的pre-commit钩子未修改:husky-init初始化后会默认生成一个pre-commit钩子,内置npm test命令,如果你项目的package.json中没有配置test脚本,就会触发执行失败。
  • 缺少commitlint必要配置:你初始化时添加了commitlint的commit-msg钩子,但如果未安装commitlint相关依赖、未添加commitlint配置文件,也会触发执行报错。
  • 钩子文件无执行权限:Ubuntu系统下如果生成的husky钩子文件缺少可执行权限,会直接导致钩子运行失败。
解决方案
  1. 修正commit-msg钩子内容,恢复commitlint校验逻辑,文件路径.husky/commit-msg:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx --no-install commitlint --edit "$1"
  1. 新建或修改pre-commit钩子文件,将代码校验逻辑放到对应的钩子中,文件路径.husky/pre-commit:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

echo "HOOK PRE-COMMIT"

yarn lint-check
yarn prettier-check
  1. 检查package.json的scripts配置,确保存在对应的命令,示例配置参考:
{
  "scripts": {
    "lint-check": "eslint . --ext .js,.jsx,.ts,.tsx",
    "prettier-check": "prettier --check ."
  }
}
  1. 安装commitlint必要依赖并添加配置文件:
    执行安装命令:
    yarn add @commitlint/cli @commitlint/config-conventional -D
    项目根目录新建commitlint.config.js,内容参考:
module.exports = {
  extends: ['@commitlint/config-conventional']
}
  1. 给所有husky钩子添加可执行权限,避免Ubuntu下权限不足:
    chmod +x .husky/*

内容的提问来源于stack exchange,提问作者THIAGO DE BONIS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 00:24:01