【问题标题】:Committing fails in Git hooks pre-commit because the node command wasn't found由于找不到节点命令,在 Git 挂钩预提交中提交失败
【发布时间】:2019-07-07 19:06:55
【问题描述】:

我使用 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"

我不熟悉预提交文件或它们的工作方式,但我目前有 v10.15.0 用于 Node.js,1.8.0_201 用于我的 Java JDK 和 JRE。我使用的 JHipster 版本是5.8.1

为了消除提交中的错误,我应该在这个文件中更改什么,包括第 32 行?

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

提前致谢。

【问题讨论】:

  • 您拥有的节点版本应该可以正常运行。您可以尝试再次运行npm install,因为这会触发挂钩安装脚本运行。

标签: java node.js angular github jhipster


【解决方案1】:

您可以使用命令提示符向 Windows PATH 环境变量添加新条目,如下所示:

SET PATH=C:\Program Files\Nodejs;%PATH%

npm

或者您可以使用 Windows 图形用户界面设置 PATH 变量。 (对我来说很烦人:/)

【讨论】:

    【解决方案2】:

    正如@Stephen Savitzky 所建议的,这可能是节点安装问题。但是,如果你能够

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

    那么,这可能是节点采购问题,因为它的路径可能与终端或 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钩子脚本启动时实际发生的事情的好方法。

    【讨论】:

    • 我今天安装了asdf 并核对了我的nvm。我发现我只需要重新启动 VS Code :)
    【解决方案3】:

    "node: command not found" 表示在$PATH 中的任何目录上都没有名为node 的程序,该环境变量告诉shell 在哪里寻找程序。挂钩通常使用非常受限的$PATH 运行;例如/bin:/usr/bin.

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-06-02
      • 2012-07-11
      • 2015-08-23
      • 2015-07-08
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2013-08-26
      相关资源
      最近更新 更多