You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下nvm管理Node时SourceTree调用Husky报错该如何修复?

SourceTree 配合 Husky 两类常见报错的排查与修复方案

报错1:提交时提示「Can't find node in PATH」,同步抛出「husky > pre-commit hook failed」

问题根因

SourceTree 运行时默认不会加载终端的用户环境变量,通过 nvm 安装的 Node 路径仅存在于终端的 PATH 配置中,SourceTree 调用 Git 钩子时无法识别到 Node 执行文件。

排查步骤

  • 打开终端进入项目根目录,执行 which node,记录输出的 Node 绝对路径(例如 /Users/yourname/.nvm/versions/node/v18.17.0/bin/node)
  • 打开 SourceTree 偏好设置 -> Git 选项卡,确认当前使用的是内置 Git 还是系统 Git

修复方案

  • 单项目适配:在项目根目录的 .husky 文件夹下新建 .env 文件,写入以下内容,将路径替换为上一步查到的 Node 所在的上层目录:
    PATH="/Users/yourname/.nvm/versions/node/v18.17.0/bin:$PATH"
    
  • 全局适配(仅Mac):在用户根目录新建 .huskyrc 文件,写入以下内容,自动加载 nvm 环境,所有项目都可生效:
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
    

注意:Windows 用户可直接在系统环境变量的 PATH 中手动添加 nvm 存放 Node 执行文件的目录,重启 SourceTree 即可生效

报错2:使用 SourceTree 内置 Git 提交时提示「Current directory is not a git directory!」

问题根因

SourceTree 调用内置 Git 执行 Husky 钩子时,工作目录没有正确指向当前项目根目录,导致 Husky 无法识别到 .git 文件夹。

排查步骤

  • 终端进入项目根目录,执行 git rev-parse --is-inside-work-tree,输出为 true 即证明项目本身 Git 配置正常,问题出在 SourceTree 的执行上下文

修复方案

  • 优先方案:切换 SourceTree 使用系统 Git,而非内置 Git。打开 SourceTree 偏好设置 -> Git -> 点击「使用系统 Git」,如果识别失败,可将终端执行 which git 输出的路径填入对应输入框
  • 内置 Git 适配:如果必须使用内置 Git,可在 .husky 目录下所有钩子脚本(比如 pre-commit、commit-msg)的第一行添加工作目录指定代码:
    cd 你的项目根目录绝对路径
    
  • 版本适配:将 Husky 升级到 v8 及以上版本,新版本已经兼容了 SourceTree 内置 Git 的路径识别逻辑,执行 npm install husky@latest --save-dev 重新安装即可。

内容的提问来源于stack exchange,提问作者TER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:48:02