git找不到node?

git commit 后提示
'node' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
husky - pre-commit hook exited with code 1 (error)
,有node而且在命令行正确出来node的,网上什么删除最近的提交等等方法都不行
最后就删除了git,重新创建版本库,就正常了
提交了几次后,又突然提示找不到node了
那就再次删除,后面又重演上面说的
然后重新克隆到新的文件夹也没有用,还是会提交了几次后,又突然提示找不到node了
删除了n多遍,也重新克隆了n多遍,不知道为啥这样

下面是项目中的配置

pre-commit :

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged

commit-msg :

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

npx --no-install commitlint --edit

husky.sh:

#!/usr/bin/env sh
if [ -z "$husky_skip_init" ]; then
  debug () {
    if [ "$HUSKY_DEBUG" = "1" ]; then
      echo "husky (debug) - $1"
    fi
  }

  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

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

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

  if [ $exitCode = 127 ]; then
    echo "husky - command not found in PATH=$PATH"
  fi

  exit $exitCode
fi
阅读 1.9k
avatarAI BotBETA

这个问题看起来与Git和Node.js的环境配置有关,而不仅仅是Git本身的问题。当Git在尝试运行husky的pre-commit hook时,它可能是在一个子shell中运行,而这个子shell可能没有正确地继承你的系统环境变量,特别是那些与Node.js相关的。

这里有几个可能的解决方案:

  1. 检查环境变量:确保你的系统环境变量中包含了Node.js的路径。在Windows上,你可以通过“系统属性”->“高级”->“环境变量”来检查和编辑环境变量。在Unix-like系统上,你可以在你的shell配置文件(如.bashrc.zshrc等)中检查PATH变量。
  2. 使用绝对路径:在husky的配置中,尝试使用Node.js的绝对路径来运行脚本,而不是依赖环境变量。你可以通过which node(在Unix-like系统上)或where node(在Windows上)来找到Node.js的绝对路径。
  3. 重新安装husky:有时候,重新安装husky可以解决问题。你可以尝试删除node_modules文件夹和package-lock.json文件,然后重新运行npm install
  4. 检查Git Bash或MinGW:如果你在使用Windows,并且是通过Git Bash或MinGW来运行Git命令,那么你可能需要确保这些工具也配置了正确的环境变量。
  5. 查看husky的配置:检查.huskyrc.json.git/hooks/pre-commit文件,确保它们正确地引用了Node.js和相关的脚本。

如果以上方法都不能解决问题,那么可能需要更深入地查看你的系统配置和Git、Node.js、husky的安装情况。此外,尝试在一个新的、干净的目录中创建一个新的Git仓库,并仅添加必要的文件和配置,看看问题是否仍然存在。这有助于确定问题是否与特定的项目配置或系统设置有关。

2 个回答

不好判断问题在哪里,应该和你的配置的 git hook 有关系。
husky应该是和项目走的,可能是husky里面配置了hook命令有关系。因为里面配置的执行的脚本有问题,可能是环境变量配置问题,也可能是路径权限问题。

husky 用来给 git 添加钩子,它会在你执行 git 的时候调用一些脚本,进行 lint、校验之类的工作。

如果你的 node 不是全局安装,或者你当前执行命令的环境没有办法访问到 node,就会报错。

解决方案:把 node 添加到全局 PATH 里。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题