首页 前端知识 [BUG] husky github desktop nvm 执行git操作时报错:“PREFIX“、husky/pre-push: 4: npm: not found

[BUG] husky github desktop nvm 执行git操作时报错:“PREFIX“、husky/pre-push: 4: npm: not found

2024-09-04 23:09:11 前端知识 前端哥 418 857 我要收藏

在我的开源项目 SwanLab 中,通过 husky 实现了几个 git hook,以实现代码提交时的代码风格格式化、代码格式检查等等操作,以规范和检查代码。但是因为环境变动,触发了一些bug:

在我使用 github desktop(一个 git 操作的 ui 工具)将本地的提交推送到远程时,出现了错误(但是使用命令行进行 git push 是正常的):

nvm is not compatible with the “PREFIX” environment variable: currently set to “/usr/lib/github-desktop/resources/app/git”
Run unset PREFIX to unset it.
.husky/pre-push: 4: npm: not found
error: failed to push some refs to ‘github.com:SwanHubX/swanlab.git’
husky - pre-push hook exited with code 127 (error)
husky - command not found in PATH=/usr/lib/github-desktop/resources/app/git/libexec/git-core:/home/swan/.cargo/bin:/home/swan/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

这是在 husky 中的 pre-push 中发生的错误,在 pre-push 中执行了一个 npm 的命令。

上面的错误其实是两个错误合成的:

  • “PREFIX” environment variable
  • .husky/pre-push: 4: npm: not found

“PREFIX” environment variable
这个错误的修复在错误信息中已经给出了,只需要在 husky 脚本中单独写一行即可。

unset PREFIX

.husky/pre-push: 4: npm: not found
这个错误是因为 husky 脚本在执行的时候,环境变量没有找到,所以只需要在执行前手动标注导出一下环境变量即可:

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

所以最终可以这样同时解决两个错误:在 .husky/pre-push 中,执行 npm 操作前写入:

unset PREFIX

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

但是

直接在仓库的 git hook 中修改在某些情况下并不好,就例如我所在的项目团队,大家开发使用的操作系统涵盖 linux、mac、windows,上面的解决方式可能在 windows 上并不起效果。

并且这个 bug 大概率是和本机环境相关,属于异常情况,本来不添加这些环境设置也能正常运行。所以最好的办法是修改自己本机的 husky 配置。

下面以 Ubuntu 为例。

一般项目的 husky 中的 hush.sh 里有这么一段配置:

  if [ -f ~/.huskyrc ]; then
    debug "sourcing ~/.huskyrc"
    . ~/.huskyrc
  fi

说的是,如果当前用户的用户目录下有 .huskyrc 这个脚本,那么运行这个脚本。所以,我们可以将上面写到项目工程文件中的环境配置脚本,剪切到 ~/.huskyrc 中(没有这个文件就自己创建一个)。

在这里插入图片描述

这样既解决了环境问题,又不会污染项目脚本。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/17692.html
评论
发布的文章

关于HTML的知识

2024-09-18 23:09:36

js简单实现轮播图效果

2024-09-18 23:09:36

CSS3美化网页元素

2024-09-18 23:09:27

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!