node.js - 在 WebStorm 和 SourceTree 中使用 NVM 时 Git Hooks 错误

标签 node.js git webstorm githooks nvm

我正在使用 nvm--no-use标记为这导致我的终端启动速度非常慢🐌。这意味着我总是需要运行 nvm use <NODE_VERSION>在新的终端选项卡上以便能够使用 nodenpm .

我有一个项目,其中使用 ghooks 配置了一些 Git Hooks ,因此每次我移动到不同的分支或提交某些内容时,我都会在 WebStorm 和 SourceTree 中遇到不同类型的错误,所有错误都指向 node找不到。这些是其中的一些:

SourceTree checkout :

git -c diff.mnemonicprefix=false -c core.quotepath=false -c 
credential.helper=sourcetree checkout BRANCH
Switched to branch 'BRANCH'
M   ...
M   ...
...
env: node: No such file or directory
Completed with errors, see above

WebStorm commit :

Commit failed with error
0 files committed, 3 files failed to commit: COMMIT_MESSAGE env: node: No such file or directory

在 WebStorm 中,我认为手动设置 node要使用的版本(在 Preferences > Languages & Frameworks > Node.js and NPM > Node interpreter 下)会解决问题,但事实并非如此。

我正在使用 WebStorm 2016.1.3, Build #WS-145.1616 .

删除 --no-use flag 当然会修复它,但这不是一个选项,因为终端在启动时变得非常慢。还有其他方法可以解决这个问题吗? 🙏

最佳答案

考虑使用 husky (也可能使用 lint-staged)来更好地控制 Git Hook 的执行方式。基本上,您可以在项目的 package.json 中将所有 Hook 很好地定义为 NPM 命令。由于这一切都进入 Git Hook ,它们将在最后使用 GUI 客户端(如 IDE 或 SourceTree)执行。

这个问题似乎与系统对终端和 GUI 应用程序(例如 WebStorm 或 SourceTree)使用不同的路径有关。使用 husky,您可以定义一个 ~/.huskyrc 并记下要使用的 Node 版本,或者预先为它提供源代码 nvm。我也使用 nvm,从他们的自述文件中获取的配置按原样工作:

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

注意。无论如何,我与 husky 无关,只是喜欢它的工作方式。

关于node.js - 在 WebStorm 和 SourceTree 中使用 NVM 时 Git Hooks 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45637879/

相关文章:

javascript - 如何删除不需要的键和键值

node.js - Nodejs(通用池): release the resource when catching an error

javascript - typescript 中的错误消息说函数参数与@TypeScript 0.9.1 不匹配

intellij-idea - 在 WebStorm 上安装 Cursive 插件

javascript - Tesseract 无法加载任何语言( Node tesseract.js)

如果工作区不干净,Git 命令获取带有 "-dirty"后缀的 HEAD SHA1

git - 我需要签名的提交,但我需要禁用对 refs/notes/commits 的签名

java - 是否可以在 Stash 预接收 Hook 中使用 pep8 和 yapf?

intellij-idea - Webstorm、PHPStorm、IntelliJ IDEA 中自动断行注释

node.js - 从 AWS lambda 函数写入 dynamodb