Windows系统下Husky预提交钩子执行失败的原因是什么?
Windows下Husky预提交钩子报错找不到bash的解决办法
问题原因
你写的npm命令本身不依赖bash,但Husky自动生成的钩子启动脚本是基于bash编写的。打开项目里的.git/hooks/pre-commit文件就能看到,开头第一行是#!/usr/bin/env bash——Windows系统默认没有这个路径下的bash环境,所以会触发找不到bash的错误。
解决办法
- 安装Git for Windows并配置PATH
安装Git for Windows时,选择「Use Git and optional Unix tools from the Command Prompt」选项,安装完成后,Git自带的bash会被加入系统PATH,Husky就能正常调用bash执行钩子脚本。 - 修改Husky的shell配置
找到项目根目录下的.husky/_/husky.sh文件,把开头的#!/usr/bin/env bash替换成Git bash的绝对路径(比如#!/C/Program\ Files/Git/bin/bash.exe),或者改用Windows原生的cmd:
注意:改用cmd后,钩子脚本里的命令语法需要调整为cmd兼容的格式。#!/usr/bin/env cmd - 切换到PowerShell
把钩子脚本开头改成#!/usr/bin/env pwsh,确保PowerShell已加入系统PATH,同时调整脚本语法适配PowerShell。
内容的提问来源于stack exchange,提问作者ojathelonius
相关产品推荐
相关产品推荐

