VSCODE 和 GitHub 桌面预提交挂钩:npx:找不到命令

Posted

技术标签:

【中文标题】VSCODE 和 GitHub 桌面预提交挂钩:npx:找不到命令【英文标题】:VSCODE & GitHub Desktop pre-commit hook: npx: command not found 【发布时间】:2021-07-10 22:18:03 【问题描述】:

我正在开始一个新的存储库,我认为我应该使用最新的 Huksy v6,它是使用 LintStaged 的​​安装指南安装的:

npx mrm lint-staged

// package.json updated with:
"husky": ">=6",
"lint-staged": ">=10",

这会添加必要的包并添加 husky 文件,包括 precommit 文件:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx lint-staged

当我在终端中运行我的提交时,它工作正常。但是,如果我尝试在 GitHub Desktop 或 VSCode 中运行我的提交(我知道一些队友会这样做),则会导致两者都出错:

npx:找不到命令。 husky - 预提交钩子退出,代码为 127(错误)

我已经安装了 npx:

npx -v
// 6.14.10

如果我尝试在 globall 中安装,如其他 *** 建议中所述,它会返回有关现有位置的警告(带 & 不带 sudo):

错误! EEXIST:文件已存在,符号链接 '../lib/node_modules/npx/index.js' -> '/Users/plucks/.nvm/versions/node/v14.15.4/bin/npx' npm 错误!文件存在:/Users/plucks/.nvm/versions/node/v14.15.4/bin/npx npm 错误!删除现有文件并重试,或运行 npm npm 错误!用 --force 随意覆盖文件。

我有什么办法可以让 VSCode 和 GitHub Desktop 等程序运行吗?

【问题讨论】:

您找到解决方案了吗?我面临同样的错误! 【参考方案1】:

根据this suggestion,将以下内容添加到您的pre-commit 文件应该可以解决它:

export NVM_DIR="$HOME/.nvm/nvm.sh"
. "$(dirname $NVM_DIR)/nvm.sh"

export NVM_DIR="$HOME/.nvm"
a=$(nvm ls | grep 'node')
b=$a#*(-> 
v=$b%%[)| ]*

export PATH="$NVM_DIR/versions/node/$v/bin:$PATH"

所以完整的文件应该是这样的:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

export NVM_DIR="$HOME/.nvm/nvm.sh"
. "$(dirname $NVM_DIR)/nvm.sh"

export NVM_DIR="$HOME/.nvm"
a=$(nvm ls | grep 'node')
b=$a#*(-> 
v=$b%%[)| ]*

export PATH="$NVM_DIR/versions/node/$v/bin:$PATH"

npm run test

【讨论】:

【参考方案2】:

我从这里得到了解决方案。希望你也能找到!

https://typicode.github.io/husky/#/?id=command-not-found https://github.com/typicode/husky/issues/912

【讨论】:

以上是关于VSCODE 和 GitHub 桌面预提交挂钩:npx:找不到命令的主要内容,如果未能解决你的问题,请参考以下文章

Git 预提交挂钩:更改/添加的文件

如何在预提交挂钩中使用 git diff 的退出代码

SVN 的 CPP 检查预提交挂钩

设置预提交挂钩 jshint

GitHub:预接收挂钩

预提交挂钩失败