Husky pre-commit钩子执行失败(错误码126)求助
解决Windows PowerShell下Husky pre-commit钩子执行错误(代码126)
问题原因
你用PowerShell的echo "npx lint-staged" > .husky/pre-commit生成钩子文件时,默认会创建UTF-16 LE编码的文件,而Husky无法识别这种编码的脚本,因此抛出"cannot execute binary file"错误。另外Husky v9推荐使用官方的钩子添加命令,避免手动修改文件带来的格式问题。
修复步骤
- 删除现有错误的pre-commit文件
Remove-Item .husky/pre-commit
- 使用Husky官方命令添加pre-commit钩子
npx husky add .husky/pre-commit "npx lint-staged"
这个命令会自动生成UTF-8编码的钩子脚本,同时保证文件格式符合Husky的要求。
验证钩子文件编码(可选)
用记事本打开.husky/pre-commit,点击「文件」-「另存为」,确认编码是UTF-8(无BOM),如果不是就重新选择编码保存。测试提交
git add . git commit -m "test husky lint check"
额外注意事项
- 你的
lint-staged配置中,cd client && npx eslint --fix可以简化为eslint --fix(只要项目根目录已安装eslint,lint-staged会自动在对应目录执行命令),如果client目录有独立的package.json,保留原命令也没问题。 - 确保
package.json中的prepare脚本"husky"能正常执行,Husky v9会通过这个脚本自动启用钩子。
内容的提问来源于stack exchange,提问作者Durkshaw
相关产品推荐
相关产品推荐

