如何在带有 nvm 的 MacO 上使用 Husky 和 ​​SourceTree 修复这些错误? “在 PATH 中找不到节点”和“当前目录不是 git 目录!”

Posted

技术标签:

【中文标题】如何在带有 nvm 的 MacO 上使用 Husky 和 ​​SourceTree 修复这些错误? “在 PATH 中找不到节点”和“当前目录不是 git 目录!”【英文标题】:How can I fix these errors using Husky with SourceTree on MacOs with nvm? "Can't find node in PATH" and "Current directory is not a git directory!" 【发布时间】:2021-11-25 05:13:20 【问题描述】:

当我在节点项目中使用 husky 挂钩并尝试通过应用程序 SourceTree 提交到 git 时,我看到了错误。钩子在 package.json 中指定。我正在使用 nvm 来管理节点版本。

错误Can't find node in PATHhusky > pre-commit hook failed SourceTree 用于 git commit 时会报错。

一旦绕过这个错误,当使用 SourceTree 的嵌入式 git 通过 SourceTree 尝试提交时,husky 会报告另一个错误:“当前目录不是 git 目录!”。

如何解决这些错误?

【问题讨论】:

【参考方案1】:

(1) 解决第一个错误“Can't find node in PATH”:

由于您是从应用程序(SourceTree)而不是从命令行运行 git,因此 husky 没有用于查找节点的环境变量。为了解决这个问题,husky 提供了一种机制:它会在运行 hooks 之前运行用户指定的文件 ~/.huskyrc

这对我有用:

.bashrc中,我在PATH设置后添加了这一行:

echo "export PATH="$(dirname $(which node)):$PATH"" > ~/.huskyrc

另一个建议在 husky 文档中描述,https://typicode.github.io/husky/#/?id=command-not-found

# ~/.huskyrc
# This loads nvm.sh and sets the correct PATH before running hook
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

(2)解决“当前目录不是git目录!” 许多用户报告说,更改他们的 git 版本已经为他们解决了这个问题。

如果您使用 SourceTree,您可以将其配置为使用 SourceTree 中的嵌入式 git 版本或系统版本。当我从 SourceTree 中的嵌入式版本 2.31.0 切换到我系统上的系统版本 2.30.1 时,错误已解决。

在SourceTree中,进入Preferences -> git设置git版本。

【讨论】:

以上是关于如何在带有 nvm 的 MacO 上使用 Husky 和 ​​SourceTree 修复这些错误? “在 PATH 中找不到节点”和“当前目录不是 git 目录!”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MacO、Python 3.5.1 上安装 pyQt?

使用 g++ 编译使用 fltk 和 OpenGL 的文件在 MacO 上会出错

当另外两个 2.X 也在 MacO 上时,如何将第三方库安装到 Python 3.X? [复制]

模拟器无法在 MacO 上运行。模拟器声称操作系统已过时

在 Windows 上安装多个版本的 Node.js,而不使用 NVM for Windows

mac上管理不同node版本