在 Git 挂接预提交中提交失败,因为找不到 node 命令

2022-09-02 13:17:19

我用Angular和Java生成了一个JHipster应用程序,在我之前制作的存储库中。然后我用它生成了一些JDL类,并且构建成功了,但是当我尝试在GitHub中提交我的更改时,它抛出了以下错误:

Commit failed - exit code 1 received, with output: '.git/hooks/pre-commit: line 32: node: command not found'

我查看了预提交文件的内部:

#!/bin/sh
# husky

# Hook created by Husky
#   Version: 1.3.1
#   At: 2/13/2019, 12:10:11 PM
#   See: https://github.com/typicode/husky#readme

# From npm package
#   Name: husky
#   Directory: undefined
#   Homepage: https://github.com/typicode/husky#readme

scriptPath="JHipsterProject/node_modules/husky/run.js"
hookName=`basename "$0"`
gitParams="$*"

debug() {
  [ "${HUSKY_DEBUG}" = "true" ] && echo "husky:debug $1"
}

debug "$hookName hook started..."

if [ -f "$scriptPath" ]; then
  # if [ -t 1 ]; then
  #   exec < /dev/tty
  # fi
  if [ -f ~/.huskyrc ]; then
    debug "source ~/.huskyrc"
    source ~/.huskyrc
  fi
  node "$scriptPath" $hookName "$gitParams"
else
  echo "Can't find Husky, skipping $hookName hook"
  echo "You can reinstall it using 'npm install husky --save-dev' or delete this hook"
fi

错误位于第 32 行:

node "$scriptPath" $hookName "$gitParams"

我不熟悉预提交文件或它们是如何工作的,但我目前有Node.js,以及我的Java JDK和JRE。我正在使用的JHipster版本是.v10.15.01.8.0_2015.8.1

我应该在这个文件中更改什么,包括第32行,以摆脱我的提交中的错误?

我也在使用Visual Studio Code IDE,如果这有帮助的话。

提前致谢。


答案 1

正如@Stephen Savitzky所建议的那样,这可能是Node安装问题。但是,如果您能够

  1. 正常运行应用程序没有问题,并且
  2. 从终端执行 git 提交时看不到任何问题

然后,这可能是节点采购问题,因为它的路径可能与终端或VSC等GUI应用程序不同。

您的设置似乎用于预提交钩子,因此为了确保您拥有正确的Node版本,您可以按照文档中的建议进行添加:husky~/.huskyrc

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

然后,您可以从 NVM(如果使用一个)或其他源获取节点。这也是调试钩子脚本启动时实际发生的情况的好方法。husky


答案 2

“node: command not found”表示 在 中的任何目录上都没有调用程序,环境变量告诉 shell 在哪里可以找到程序。钩子通常以非常受限制的方式运行;例如.node$PATH$PATH/bin:/usr/bin

处理此问题的最佳方法是为未安装在 或 中的任何程序使用绝对路径。您可以找出与该命令一起使用的路径:/bin/usr/binwhich

> which node
/home/steve/.nvm/versions/node/v10.6.0/bin/node

当然,也有可能节点根本没有安装在运行钩子的机器上。


推荐