[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。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在我的开源项目 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 中(没有这个文件就自己创建一个)。

github desktop提交husky报错,但是命令行没问题,踩坑,笔记,bug,github,git,husky

这样既解决了环境问题,又不会污染项目脚本。文章来源地址https://www.toymoban.com/news/detail-805575.html

到了这里,关于[BUG] husky + github desktop + nvm 执行git操作时报错:“PREFIX“、husky/pre-push: 4: npm: not found的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git commit使用husky校验代码格式报错 因为没有将钩子 ‘.husky/pre-commit‘ 设置为可执行

    系统 mac husky一直没什么问题,有一天发现给git commit 的时候 终端报错 解决办法 之后在git commit 发现,husky是可以工作但是还是有报错信息 这个错误是由于系统无法找到 ‘.husky/commit-msg’ 文件或目录导致的。通常,这是因为你的项目中缺少了 ‘.husky’ 目录或者该目录中缺少

    2024年04月09日
    浏览(67)
  • 使用pre commit钩子再git commit时报错“husky - pre-commit hook exited with code 1 (error)”

    使用husky配置git commit规范 1.我们在使用 npx husky install ,初始化之后,项目 根目录 下会出现 .husky 文件夹 2.npx husky add .husky/pre-commit \\\'npx lint-staged’命令是为了在git提交的时候,使用lint-staged格式化代码 我们发现在pre-commit 文件中已经自动生成如下内容: 但是两次执行git commit时控制

    2024年02月11日
    浏览(62)
  • ​​​​​​​GitHub Desktop下载、安装、操作教程

    目录 下载 安装 创建本地仓库 文件操作 分支操作 标签操作 远程仓库 下载 Git官网提供对应得下载链接页面: 下载地址:https://central.github.com/deployments/desktop/desktop/latest/win32s 安装 无安装过程,安装完成后,弹出应用界面 配置 点击软件得File菜单后,选择Options, 设定软件得操

    2024年02月15日
    浏览(39)
  • github使用教程(包括git命令、git Desktop桌面端)——从安装到入门,适合小白

    2023.12.09持续更新中 计划再更新一些git软件命令以及git Desktop使用方法 众所周知,github上有着丰富且优秀的项目以及学习资源,对于想从该平台上学习生信的人来说,可以提供很大帮助。 因此,本文主要是想记录一下自己学习的步骤(记录向),同时分享给有需要帮助的人。

    2024年04月13日
    浏览(51)
  • 傻瓜式git管理。全平台,全编译器通用。github desktop+vscode

    git版本管理是每个程序员必学的知识,就算不打算团队合作,重要的代码保留也是非常重要的。git可视化管理工具有很多,例如github desktop,source tree,TortoiseGit。我这里推荐github desktop,github出品的软件,特点是傻瓜式操作 github软件下载 我们小白需要的是什么?就是简单的代码

    2024年02月07日
    浏览(65)
  • 关于GitHub Desktop中的“Open in Git Bash”无法使用的问题

    问题描述         在GitHub Desktop中选择Repository--Open in Git Bash(如图1),出现如图2所示结果。 图1 图2 解决办法(Windows10)         这个问题是由于Git的环境变量没有得到正确配置所导致的,所以需要正确设置环境变量,解决方法参考自How to \\\"Open in Git Bash\\\" in Github Desktop。  

    2024年02月09日
    浏览(49)
  • Git 使用小乌龟(TortoiseGit)拉取Github项目时报错【server sent :publickey】

    报错:No supported authentication methods available (server sent: publickey) 原因:由于小乌龟没有设置git 的路径,导致使用小乌龟的时候并没有使用git,所以连接不上。 解决如下: 这里应该设置的时GIt 的路径而不是小乌龟的路径。如图是正确的:

    2024年02月07日
    浏览(52)
  • 解决Jenkins执行git脚本时报错:No such device or address问题

    问题现象: Jenkins执行BeanShell脚本时,报错:jenkins fatal: could not read Username for \\\'http://112.11.120.1\\\': No such device or address  解决方案: 解决服务器拉取git仓库的代码权限,使用高级子模块克隆功能。 执行结果:虽然也报错,但整体脚本执行通过

    2024年02月01日
    浏览(39)
  • openGauss学习笔记-201 openGauss 数据库运维-常见故障定位案例-执行修改表分区操作时报错

    201.1 执行修改表分区操作时报错 201.1.1 问题现象 执行ALTER TABLE PARTITION时,报错如下。 201.1.2 原因分析 在同一条ALTER TABLE PARTITION语句中,既存在DROP PARTITION又存在ADD PARTITION时,无论它们在语句中的顺序是什么,openGauss总会先执行DROP PARTITION再执行ADD PARTITION。执行完DROP PARTITIO

    2024年01月19日
    浏览(46)
  • git Husky

             虽然我们已经要求项目使用eslint了,但是不能保证组员提交代码之前都将eslint中的问题解决掉了: 也就是我们希望保证代码仓库中的代码都是 符合eslint规范 的; 那么我们需要在组员执行 git commit 命令的时候对其 进行校验 ,如果不符合eslint规范,那么自动通过

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包