sh: husky: 找不到命令
Posted
技术标签:
【中文标题】sh: husky: 找不到命令【英文标题】:sh: husky: command not found 【发布时间】:2021-07-07 20:46:12 【问题描述】:我已经用 husky 设置了一个节点项目,但是当我的同事尝试在他的 Mac 上运行 npm install
时,他收到以下错误:
noa-be@1.0.0 prepare
husky install
sh: husky: command not found
npm ERR! code 127
npm ERR! path /Users/X/Desktop/Workspace/project
npm ERR! command failed
npm ERR! command sh -c husky install
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/X/.npm/_logs/2021-04-12T13_07_25_842Z-debug.log
这些是相关的 package.json 部分:
"scripts":
"prepare": "husky install"
,
"devDependencies":
"husky": "^5.2.0",
我认为在运行npm install
时安装 husky 就足够了,但事实并非如此。我错过了什么?
【问题讨论】:
【参考方案1】:我相信这可能是特定于版本的问题。安装版本 6,npm i husky@6.0.0 --save-dev
,它应该像husky doc 所说的那样工作。
显然,当我执行npm i husky --save-dev
时,它出于某种奇怪的原因为我安装了"husky": "^0.8.1"
,给了我完全相同的错误:sh: husky: command not found
。
方法一:
手动更新,在您的package.json
:
"scripts":
"prepare": "husky install",
"create-hook": "husky add .husky/pre-commit \"npm test\"",
然后,运行npm run prepare && npm run create-hook
。
它应该创建带有.pre-commit
文件的.husky
目录。
方法二:
npx husky install
npm set-script prepare "husky install"
npx husky add .husky/pre-commit "npm test"
【讨论】:
【参考方案2】:我已经能够通过升级到最新的 Husky 版本(7.0.1,从 5.2.0)来解决这个问题。
Git 也很有帮助,它告诉我这些文件不是可执行文件。 (Git V 2.24.1)
所以我给了他们可执行的权限:
chmod +x PATH_TO_HUSKY_FILE
你需要为每个钩子执行这个命令
【讨论】:
【参考方案3】:我在同一个问题上苦苦挣扎了好几个小时。最后,我可以通过以下方式安装依赖项并开始处理我的项目:
-
暂时从 package.json 文件中删除
"prepare": "husky install"
脚本。
运行npm i
(npm install
)。依赖安装成功。
再次添加您在第 1 步中删除的 "prepare"
脚本。
再次运行npm i
以安装 husky git 钩子,这样 husky 就可以从现在开始工作了。
【讨论】:
以上是关于sh: husky: 找不到命令的主要内容,如果未能解决你的问题,请参考以下文章
如何在带有 nvm 的 MacO 上使用 Husky 和 SourceTree 修复这些错误? “在 PATH 中找不到节点”和“当前目录不是 git 目录!”