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

问题描述

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

npx mrm lint-staged

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

这会添加必要的包并添加包含预提交文件的 husky 文件

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

npx lint-staged

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

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

我安装了 npx:

npx -v
// 6.14.10

如果我尝试在 globall 中安装,如其他 StackOverflow 建议中所述,它会返回有关现有位置的警告(带 & 不带 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 之类的程序可以运行吗?

解决方法

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

,

根据 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...