繁体   English   中英

sh: husky: 找不到命令

[英]sh: husky: command not found

我已经用 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 就足够了,但事实并非如此。 我错过了什么?

如果您使用的是nvm ,您可能希望在home目录中创建一个名为.huskyrc的文件,并向其中添加以下代码行:

~/.huskyrc

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

我在同一个问题上苦苦挣扎了好几个小时。 最后,我可以通过以下方式安装依赖项并开始处理我的项目:

  1. 暂时从 package.json 文件中删除"prepare": "husky install"脚本。
  2. 运行npm inpm install )。 依赖安装成功。
  3. 再次添加您在步骤 1 中删除的"prepare"脚本。
  4. 再次运行npm i安装 husky git hooks,这样 husky 就可以从现在开始工作了。

我相信这可能是特定于版本的问题。 安装版本 6, npm i husky@6.0.0 --save-dev ,它应该像哈士奇文档所说的那样工作。

显然,当我做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

它应该创建.husky目录,其中包含.pre-commit文件。

方法二:

npx husky install

npm set-script prepare "husky install"

npx husky add.husky/pre-commit "npm test"

我已经能够通过升级到最新的 Husky 版本(7.0.1,从 5.2.0)来解决这个问题。

Git 也很有帮助,并告诉我这些文件不是可执行文件。 (Git V 2.24.1)

所以我给他们可执行的权限:

chmod +x PATH_TO_HUSKY_FILE

您需要为每个钩子执行此命令

如果NODE_ENV设置为“生产”预安装, npm ci也会引发此错误

它在我的终端中有效,但在 VSCode 版本控制中无效。 所以不得不强制使用 vscode 应用程序并重新启动它。

根据安装后的哈士奇描述,您需要进行设置:

  1. 通过执行以下命令将准备脚本添加到package.jsonnpm set-script prepare "husky install" && npm run prepare ; ZBB32Z96726;
  2. 通过执行添加一个钩子: npx husky add.husky/pre-commit "npm test"

Github Desktop中遇到了这个问题。

通过退出Github Desktop并重新打开它来解决它。

我能够通过为哈士奇提供一个明确的位置来解决这个问题

  "scripts": {
    "prepare": "node_modules/.bin/husky-run install"
  },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM