SmartGit precommit执行失败:提示node版本不兼容问题求解
问题根因
SmartGit属于桌面GUI应用,默认不会加载终端对应shell(如bash、zsh)的配置文件,因此无法读取nvm设置的当前激活Node版本路径,只会调用系统全局安装的Node版本,才会出现终端执行提交正常、SmartGit提交报错版本不匹配的情况。
解决方案
方案1:SmartGit全局配置PATH(优先级最高,一次配置所有项目通用)
- 打开终端执行命令
echo $PATH,完整复制输出的路径内容 - 打开SmartGit的首选项配置页:
- macOS:顶部菜单栏选择
SmartGit > 设置 > 环境变量 - Windows/Linux:顶部菜单栏选择
编辑 > 首选项 > 环境变量
- macOS:顶部菜单栏选择
- 点击「添加」按钮,新增环境变量:变量名填写
PATH,变量值粘贴刚才复制的终端PATH内容 - 保存配置后重启SmartGit即可生效
方案2:仅修改当前项目husky钩子(无需修改全局配置)
如果只需要解决当前项目的问题,可以调整项目内husky的加载逻辑:
- 打开项目根目录下的
.husky/_/husky.sh文件 - 在文件最开头添加如下代码:
# 加载nvm的Node环境 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
- 保存文件后无需重启SmartGit,再次提交即可正常读取nvm激活的Node版本
方案3:设置nvm默认Node版本
如果你的项目长期使用固定Node版本,可以直接将对应版本设为nvm全局默认版本:
- 终端执行命令
nvm alias default <你需要的版本号>,示例为nvm alias default v12.21.0 - 重启设备后,系统全局调用Node时默认使用该版本,SmartGit也会自动读取到对应版本
内容的提问来源于stack exchange,提问作者Marco Gagliardi
相关产品推荐
相关产品推荐

