git 为什么Husky预提交钩子在Windows上失败?

bihw5rsg  于 2023-11-15  发布在  Git
关注(0)|答案(1)|浏览(335)

在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时失败了?

fdbelqdn

fdbelqdn1#

即使在Windows上,Husky钩子也会使用sh而不是cmd执行。如果钩子包含npm命令,它会尝试执行npm.sh(例如C:\Program Files\nodejs\npm)而不是来自同一文件夹的npm.cmd
这个C:\Program Files\nodejs\npm脚本依赖于bash,如shebang行所示:

#!/usr/bin/env bash

字符串
如果你使用的是不包含bash(如MinGit,在CI中广泛使用)的Git精简版安装,你可能会得到上面的错误。在这种情况下,你可能需要使用完整的Git for Windows来包含bash。否则你需要修改你的Git hooks以兼容Windows。

相关问题