Windows环境下Husky的commit-msg钩子无法执行问题求助
解决Windows环境下Husky commit-msg钩子报错"cannot spawn .husky/commit-msg: No such file or directory"的问题
以下是针对该问题的具体解决方案,按优先级尝试:
1. 修正文件换行符格式
Mac默认使用LF换行符,Windows默认CRLF,Git自动转换可能导致脚本无法被正确识别:
- 用VS Code等编辑器打开
.husky/commit-msg文件,点击右下角的换行符标识(通常显示CRLF),切换为LF后保存。 - 为避免后续自动转换,可在项目根目录添加
.gitattributes文件,写入:.husky/* text eol=lf
2. 检查文件命名与权限
- 确保
commit-msg没有隐藏扩展名:打开Windows文件夹选项,勾选「显示文件扩展名」,确认文件名是commit-msg而非commit-msg.txt之类的变体。 - 在Git Bash中执行以下命令,赋予脚本执行权限:
chmod +x .husky/commit-msg chmod +x .husky/_husky.sh
3. 验证钩子脚本的Shebang头
确保commit-msg脚本的第一行是跨平台兼容的Shebang:
#!/usr/bin/env sh
避免使用仅适用于Mac的绝对路径(如#!/bin/sh),Windows的Git Bash会通过env找到正确的shell执行环境。
4. 重新初始化Husky钩子
若以上步骤无效,可彻底重置Husky配置:
- 卸载Husky:
npm uninstall husky - 删除现有
.husky目录:rm -rf .husky - 重新安装并配置:
npm install husky --save-dev npx husky install npm set-script prepare "husky install" - 重新添加commit-msg钩子(以commitlint为例,替换为你的实际检查命令):
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'
内容的提问来源于stack exchange,提问作者AMAL MOHAN N
相关产品推荐
相关产品推荐

