运行预提交 husky 脚本时未找到 Npx

Posted

技术标签:

【中文标题】运行预提交 husky 脚本时未找到 Npx【英文标题】:Npx not found when runing pre-commit husky script 【发布时间】:2021-07-13 16:40:07 【问题描述】:

环境

节点安装在 ~/node-v14.15.3-linux-x64/bin/node 中,并且已经设置在 PATH 变量中。 VSCode 1.55.2

问题

每次我尝试在我的代码中提交更改时都会得到:

.husky/pre-commit: 4: npx: 未找到 husky - 预提交钩子退出,代码为 127(错误)

代码

husky.sh
#!/bin/sh
if [ -z "$husky_skip_init" ]; then
  debug () 
    [ "$HUSKY_DEBUG" = "1" ] && echo "husky (debug) - $1"
  

  readonly hook_name="$(basename "$0")"
  debug "starting $hook_name..."

  if [ "$HUSKY" = "0" ]; then
    debug "HUSKY env variable is set to 0, skipping hook"
    exit 0
  fi

  if [ -f ~/.huskyrc ]; then
    debug "sourcing ~/.huskyrc"
    . ~/.huskyrc
  fi

  export readonly husky_skip_init=1
  sh -e "$0" "$@"
  exitCode="$?"

  if [ $exitCode != 0 ]; then
    echo "husky - $hook_name hook exited with code $exitCode (error)"
    exit $exitCode
  fi

  exit 0
fi

预提交文件
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx lint-staged
npx lint-staged

我尝试了什么

将此"terminal.integrated.inheritEnv": false, 添加到settings.json.huskyrc 中导出节点和npx,如下所示:
export NODEJS_HOME="$HOME/node-v14.15.3-linux-x64/bin"
export NPX_Dir="$HOME/node-v14.15.3-linux-x64/bin/npx"

但没有一个有效

注意 使用git commit从vscode终端提交更改时,预提交脚本正常运行。

文档指出:

您可以在终端中回显 $PATH 并将您的应用配置为使用相同的值。

那么,我该怎么做呢?

【问题讨论】:

【参考方案1】:

最近遇到了这个问题。这个错误“.husky/pre-commit: 4: npx: not found husky - pre-commit hook exited with code 127 (error)”是因为我没有在我的系统上安装节点。我建议试试这个https://www.newline.co/@Adele/how-to-install-nodejs-and-npm-on-macos--22782681

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review

以上是关于运行预提交 husky 脚本时未找到 Npx的主要内容,如果未能解决你的问题,请参考以下文章

无法 git 提交

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

Husky 预提交钩子和压缩提交

如何仅在子目录中运行 husky 预提交

将其添加到 package.json 后,husky 预提交钩子不起作用

哈士奇预提交挂钩未触发