在Windows上,Husky预提交钩子失败,并显示以下错误消息:
/usr/bin/env: 'bash': No such file or directory
husky - pre-commit hook exited with code 127 (error)
husky - command not found in PATH=/mingw64/libexec/git-core:/mingw64/bin:/usr/bin:/cmd:/mingw64/bin:/usr/bin
字符串
但是我的提交钩子只运行一个不涉及bash的npm
命令,为什么这个命令在寻找bash
时失败了?
1条答案
按热度按时间fdbelqdn1#
即使在Windows上,Husky钩子也会使用
sh
而不是cmd
执行。如果钩子包含npm
命令,它会尝试执行npm.sh
(例如C:\Program Files\nodejs\npm
)而不是来自同一文件夹的npm.cmd
。这个
C:\Program Files\nodejs\npm
脚本依赖于bash,如shebang行所示:字符串
如果你使用的是不包含
bash
(如MinGit,在CI中广泛使用)的Git精简版安装,你可能会得到上面的错误。在这种情况下,你可能需要使用完整的Git for Windows来包含bash
。否则你需要修改你的Git hooks以兼容Windows。