NodeJS sh:husky:未找到命令

toiithl6  于 2022-12-03  发布在  Node.js
关注(0)|答案(9)|浏览(1610)

我已经设置了一个节点项目与husky,但当我的同事试图运行npm install在他的Mac上,他得到以下错误:

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",
    }
}

我以为这就足够husky在运行npm install的时候安装了,但事实并非如此,我错过了什么?

swvgeqrz

swvgeqrz1#

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

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

b4wnujal2#

我为同样的问题纠结了几个小时。最后,我可以安装依赖项,并通过这样做开始我的项目工作:
1.暂时从package.json文件中删除"prepare": "husky install"脚本。
1.运行npm inpm install)。已成功安装依赖项。
1.再次添加在步骤1中删除的"prepare"脚本。
1.再次运行npm i来安装husky git钩子,这样husky就可以从现在开始做它的工作了。

am46iovg

am46iovg3#

我已经能够通过升级到最新的哈士奇版本(7.0.1,从5.2.0)解决这个问题。
Git也很有帮助,告诉我这些文件不是可执行文件。
所以我给予他们可执行权限:

chmod +x PATH_TO_HUSKY_FILE

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

tquggr8v

tquggr8v4#

我相信这可能是版本特定的问题。安装版本6,npm i husky@6.0.0 --save-dev,它应该像husky文档所说的那样工作。
显然,当我运行npm i husky --save-dev时,它出于某种奇怪的原因为我安装了"husky": "^0.8.1",给了我完全相同的错误:sh: husky: command not found .

方法1:

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"

bqucvtff

bqucvtff5#

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

dxpyg8gm

dxpyg8gm6#

它在我的终端中工作,但在VSCode版本控制中不工作。所以不得不强制相当的VSCode应用程序并重新启动它工作。

lf5gs5x2

lf5gs5x27#

Github Desktop中遇到此问题。
通过退出Github Desktop并重新打开它来解决此问题。

2mbi3lxu

2mbi3lxu8#

我通过提供husky的确切位置解决了这个问题

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

htrmnn0y9#

Using Lerna的第一个字符

当我把husky从版本4升级到版本8时,有一些信息需要手动进行第一次预提交。为此,在.husky目录中生成了pre-commit bash脚本。
我所要做的只是运行包含在此文件中的命令:

lerna run precommit --concurrency 2 --stream

相关问题