由于未找到node命令,在Git挂钩中提交失败,原因是未提交

问题描述 投票:2回答:2

我在以前创建的存储库中用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具有v10.15.0,对于Java JDK和JRE具有1.8.0_201。我正在使用的JHipster的版本为5.8.1

此文件中是否应该更改任何内容,包括第32行,以便消除提交中的错误?

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

提前感谢。

java node.js angular github jhipster
2个回答
1
投票

“节点:未找到命令”表示node中的任何目录上都没有名为$PATH的程序,该环境变量告诉Shell在哪里寻找程序。挂钩通常在$PATH受到严格限制的情况下运行;例如/bin:/usr/bin

处理此问题的最佳方法是对/bin/usr/bin中未安装的任何程序使用绝对路径。您可以找出要使用which命令使用的路径:

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

当然,也有可能根本没有在运行挂钩的计算机上完全安装节点。


0
投票

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

  1. 正常运行应用程序也没有问题,并且
  2. 从终端执行git commit时没有问题

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

您的设置似乎正在使用husky进行预提交挂钩,因此,为确保您具有正确的Node版本,可以将~/.huskyrc添加为suggested in the docs

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

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

© www.soinside.com 2019 - 2024. All rights reserved.