patch-package踩坑记录

最近做的项目有个需求挺奇葩,业务老师不喜欢elementui自带的表单校验,想改成气泡校验,如图:

一开始我是打算二次封装的,但尝试了以后发现太麻烦,索性还是改element源码了,改的过程就不记录了。改完以后打算用patch-package同步到git,让同事们拉代码后也可以直接应用这些改动。于是开始找相关文章,网上的文章基本都是清一色的使用步骤;

  1. 安装patch-package

npm i patch-package --save-dev

经过测试,我发现一些高版本的并不好用,或者说压根就不能用,一执行npx patch-package element-ui就卡半天,不知道是不是我这个项目用的node14的原因(因为项目指定用公司自有的一套业务框架,用的vue2),这个就没过多探索了,后来发现patch-package 6.0.4不会卡半天,但是会报错,于是就先用这个版本试试了

  1. 生成补丁

npx patch-package element-ui

按上述说的,用6.0.4版本执行npx命令以后,会报error: Error: spawnSync git ENOBUFS,经排查是由于Node.js 的 spawnSync方法在执行外部命令(如 git 命令)时,如果输出或错误输出的数据超过了 Node.js 默认的缓冲区大小限制,就可能导致 ENOBUFS 错误。解决方案就是扩大缓冲区(issue),如图:

此时不得不感慨开源的伟大,这种问题在别的技术文章里压根就找不到,关键时刻还得是官方issue。不过后来高版本的patch-package确实都将缓冲区扩大了,不过依然还是卡半天,算了不管了

  1. 应用补丁

我自己将项目拷贝了一份,拉了代码之后,补丁确实拉下来了,然后就是应用补丁。网上的文章都说package.json的script里加一行postinstall: patch-package,是为了在npm install之后可以将补丁应用上去,但是我又碰到了一个错误,一行红色的加粗文字提示# "**ERROR** Failed to apply patch for package element-ui at path"提示,提示让我手动删除node_modules,并重新打补丁,我试过了,依然没用。这个时候官方issue成了最后的救命稻草,这位大佬提到package.json和lock里的依赖包版本不一致,如图:

我检查了一下我的项目,果然package.json里element版本是2.15.13,而package-lock.json里的版本是2.15.14,我索性把element卸了,重新装2.15.13的,这样package和lock里的版本就一致了,最后重新运行,终于成功应用上补丁

相关推荐
水木流年追梦15 小时前
CodeTop Top 300 热门题目3-字符串相加
java·前端·算法
编码七号15 小时前
使用playwright做前端项目的端对端自动化测试
前端·功能测试·自动化
禅思院16 小时前
中篇:构建弹性的异步组件
前端·架构·前端框架
夜影风16 小时前
Nginx部署Vue/React项目时无法直接访问页面其他路径的问题及解决方案
vue.js·nginx·react.js
恋猫de小郭16 小时前
为什么 Github Copilot 要收集你数据,也是 AI 订阅以前便宜的原因
前端·人工智能·ai编程
我叫唧唧波16 小时前
【自动化部署】CI/CD 实战(三):让 Argo CD 接管 CD,Jenkins 镜像自动同步到集群
运维·前端·ci/cd·docker·自动化·jenkins·argocd
ZC跨境爬虫16 小时前
UI前端美化技能提升日志day1:矢量图片规范与自适应控制栏实战
前端·css·ui·状态模式
朱穆朗16 小时前
Cmder创建npm等项目中,使用CLI的BUG
前端·npm·bug
Z_Wonderful16 小时前
实现图片拖动、鼠标中心点缩放、文字层跟随功能
前端·javascript·计算机外设
|晴 天|16 小时前
前端项目多平台部署:GitHub Pages + Vercel + Cloudflare Pages 实战教程
前端·javascript·vue.js