【前端学习记录】记一次升级webpack5的踩坑经历

记一次字节跳动前端实习面试 前言 准备了一个星期。刚刚结束了我人生中第一次面试。本以为胜券在握,但最后以失败告终。虽然莫名奇妙的在hr评估环节被挂了,不过我觉得挂的不冤,还有好多值得自己反思和提升的地方。同时感谢二面的面试小哥,谢谢他的肯定与鼓励,让我重整旗鼓。这次面试也是对我的一次磨练,失败并不可怕,害怕失败才可怕! 经过这次面试,我总结了下前端大厂对知识的深度和广度都有一定要求的,还有尤其是字节跳动对算法很重视,这一点无... 阅读详情

背景

最近在学习webpack5的使用和原理,学习的过程中,发现可以对项目上有很多优化,但是项目上使用的却是webpack4,而webpack5已经有好长时间了,再加上项目上不是很紧张,就新拉了一个分支,尝试将webpack4升级到webpack5。在这个过程中踩了很多坑,记录一下。

当前状态

项目上使用的webpack版本是4.x,虽然在package.json中没有体现出来,但是可以在node_modules里面可以看到。在node_modules里面,打开webpack文件夹,点击package.json,从_id上可以看到当前的版本。接下来开始升级过程。

开始升级

查看别人的升级过程

webpack4升级到webpack5经验总结这篇文章提供了升级的思路(还看了另一篇文章: 极致编译速度,一文搞定webpack5升级),就是先装webpack5,然后将所有依赖的版本统一升级到最新,最后根据控制台报错来逐一击破。

安装webpack5

删除项目node_modules里的webpack文件,因为其版本是4.x,然后控制台输入

npm i webpack@latest

这样会在package.json里面增加一项webpack版本号的配置项。并在node_modules文件夹里生成新的webpack的包。

安装npm-check-updates

这个包是用来检查当前依赖的版本的,装好后,执行 ncu -u,可以自动将所有的依赖版本更新到最新,然后再 npm i 即可。关于ncu 的用法,可以查看 关于npm 包更新工具npm-check-updates 使用详解这篇文章。

由于项目上使用的vue2,没有使用vue3,就是想只更新一下webpack的版本,于是在执行完 ncu -u之后,我把vue相关的版本号又退回了原来的版本号,只更新了一部分版本。更新完之后,开始 npm run build,于是报错之旅开始了。

Error:Cannot find module 'fs/promises

大部分关于这个报错的解决方案,都是类似这种的,cnpm报错:“Error:Cannot find module ‘fs/promises” 解决方案。说是node版本低,或是cnpm版本高,但是我没有用cnpm,所以按着装了下cnpm也不行。后来看到这篇文章,Cannot find module ‘fs/promises’ Electron JS ,上面提到有人升级node到14将问题解决了,我尝试升到node14,果然不再报错了。接下来继续开始ncu -u,可以正常使用。再次 npm run build ,继续报错。

Error: Cannot find module ‘webpack/lib/rules/DescriptionDataMatcherRulePlugin’

这个问题网上大多数的解决方案,都是说webpack的版本不匹配,webpack的版本太高了,重新降为webpack 4.x就好了,可是可是,我就是要升级的啊,是不可以打退堂鼓的。

Error: Cannot find module ‘webpack/lib/rules/DescriptionDataMatcherRulePlugin’ Require stack这篇文章中提到 可以尝试手动更新 vue-loader 包,于是 npm i vue-loader@15.9.8,之后问题解决。再次 npm run build ,继续报错。

Error: Rule can only have one resource source (provided resource and test + include + exclude) in { “exclude”: [ null ], …

这个问题,我以为是说webpack.config.js这个文件配置的有问题,但是经过一番探索和尝试之后,发现问题的原因是 @vue/cli 依赖 webpack@4,它自带的 webpack 配置无法兼容 webpack@5 ,于是就报错,不能继续编译。
于是我再次执行 ncu -u , npm i,开始更新vue-cli的版本至最新,问题解决。再次 npm run build ,继续报错。

Error: PostCSS plugin postcss-discard-comments requires PostCSS 8. Migration guide for end-users:

这个很显然是版本问题,执行一下 npm install postcss@8.2.2即可解决,这里不再多说。再次 npm run build ,继续报错。并提示:

Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db

于是执行 npx browserslist@latest --update-db ,再次 npm run build ,继续报错。

TypeError: compiler.plugin is not a function

关于这个报错,网上有很多解决方案,可能是不同原因导致的,关于webpack5 使用 PurifyCSSPlugin 插件去除 多余css 报错TypeError: compiler.plugin is not a function 解决以及原因,但是我的代码中并没有使用这个插件。
控制台报错指向了compiler.plugin('emit', function (compilation, callback) {,看了新安webpack插件后编译报错compiler.plugin is not a function这篇文章后,将compiler.plugin('emit', function (compilation, callback) {替换成compiler.hooks.emit.tapAsync('GenerateAssetWebpackPlugin', (compilation, callback) => {。再次 npm run build ,继续报错。

Module not found: Error: Can’t resolve ‘js-base64’

执行npm i js-base64即解决问题,原先代码里没有install,webpack4没有报错,webpack5检查出来,重新install一下即可。再次 npm run build ,不再报错。执行 npm run serve ,继续报错。

ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. -options has an unknown property ‘inline’. These properties are valid:

这个问题的原因是inline属性被弃用了,注释掉就好。重新执行 npm run serve ,问题解决,启动成功,但继续报错。

Error: The project seems to require yarn but it’s not installed.

执行npm i yarn,重新执行 npm run serve ,问题解决,启动成功,不再报错。但是出现了一个告警

export ‘default’ (imported as ‘echarts’) was not found in ‘echarts’

将 import echarts from 'echarts';改为import * as echarts from 'echarts';问题解决,重新执行 npm run serve ,问题解决,启动成功,不再告警。

最后

踩坑过程至此结束。webpack5顺利升级成功。 webpack5的升级完应该还需要注意一些其他事项,具体可参考 官方文档:从 v4 升级到 v5

webpack 4升级到 webpack 5 (node 14.6 升级到 node16 引发的问题) 最近node 更新了,我从 node14.6 升级到 node 16.4, 对于我新的项目来说,木有任何问题。但是今天要求在老项目中进行添加需求,发现代码运行竟然报错。 项目启动报错 第一次启动项目报错,报错内容是 Node Sass does not yet support your current environment: Windows 64-bit, 这个问题相信大家都清楚, node-sass 出问题了 按照以往的经验,删除 node_modules, 然后重新按照 node-sass, . 阅读详情

相关推荐

vue2项目升级到vue3经历分享1

看到下面这个结果真是头大,工程师是不是在摸鱼,复制、粘贴不用动脑,为何不写一个指令来实现。这个里面的工作量非常之大,得耐心去调整。,工程师采用vuex存储状态,肯定不合理,结果就是多租户被架空。像这类问题估计99%的前端开发工程师面试一定能答上来,但是实际应用就只能呵呵了。看看原来的store方式调用api,写法确实冗余拖拉,没有新的方式简洁。升级到vue3,预计工作量有点大,于是想着把过程记录下来。模式,例如这样的,是直接引用了api里面的方法。新方式,一句话定义完了,不用搞那么多绕绕。

warrah 南极狼 2751

《Webpack5 升级》- Vue2.x 项目 Webpack 4 升级 5(半自动升级)

webpack4升级5 (半自动升级)

前端技术 3295

神策数据前端社招二面复盘:项目深挖与原理追问全记录

在技术面试中,尤其是社招二面,面试官往往不再满足于基础知识的问答,而是围绕真实项目经历进行层层深挖,从技术选型到底层原理,再到极端场景下的设计方案。这一现象在数据产品类公司的前端岗位中尤为突出。性能优化、框架原理、工程化架构等核心能力,成为衡量候选人是否具备解决复杂问题能力的关键指标。以React生态为例,从Fiber架构到状态管理,再到高频数据场景下的渲染优化,每一步都考验着开发者对原理的理解深度与工程实践经验的积累。同时,WebSocket实时数据流处理、微前端架构演进等典型场景,也频繁出现在中大型前端

weixin_30607659的博客 294

webpack4 升级至 webpack5 过程总结

本文章记录本次从webpack4框架升级为webpack5之后衍生出来的所有更改 框架主体为 zzy-javascript-frame(地址在文末) 此项目为自行开发构建,包含原 webpack4 版本 和升级后的 webpack5 版本 框架技术栈为 react、react-router、HOOK、react-redux(已安装,未使用)、antd-mobile(UI框架) 插件相关改动 ...

渣渣宇的博客 8892

网易雷火前端实习超超超详细面经!!!

我是被分配到网易雷火伏羲实验室(面试官讲的),笔试题目偏简单,都是前端基础题;面试流程还算挺快的,5.11开始一面的,5.20 早上10点面完 hr,暂未收到通知。 一面 2020/5/11 45min H5 和 C3 的新特性 例举 3 个你最不常用的 css 特性 什么是变量提升?如何避免变量提升?如何禁止变量提升 什么是浅拷贝?简单的浅拷贝如何实现 ES6 有没有新增什么简单的方法浅拷贝 怎么实现一个简单类型的深拷贝,一行代码 跨域知道哪几种 你用过哪种?(JSONP) JSONP 的回调函数需要定义

互联网校招面经 1736

React微前端实战:qiankun沙箱原理与生产级落地指南

微前端是一种将单体前端按业务域拆分为独立子应用的架构范式,其核心原理是通过运行时容器实现隔离与协同。技术价值在于解决多团队并行开发中的构建耦合、发布冲突和维护成本问题,显著提升中大型前端组织的交付效率与系统韧性。典型应用场景包括电商后台、企业中台、BI平台等存在多业务线长期共存需求的系统。本文聚焦React生态下qiankun框架的深度实践,涵盖Proxy沙箱机制、样式隔离实现、子应用生命周期管理及Webpack构建避坑等关键环节,为工程化落地提供可复用的技术路径。

weixin_30876945的博客 621

webpack4升级到webpack5经验总结

最近接手了公司内部webpack相关的依赖包,于是打算优化一波。考虑到webpack5已经正式发布近两年,跟webpack相关的依赖包应该适配的差不多了,于是打算先把webpack4升级到webpack5,然后基于webpack5再进行优化。 升级前用的是 "webpack": "^4.42.1" ,升级后用的是 "webpack": "^5.72.1" 。 笔者采用的升级webpack的方法是先一键升级所有的依赖包,然后一个一个地去解决运行过程中的报错。 首先,全局安装npm-check-updates:

m0_37937502的博客 1万+

npm build报错Cannot find module ‘webpack/lib/rules/BasicEffectRulePlugin‘解决方法

尝试了无数种方法,最后删除项目,重新下载源码,重新编译解决。各种操作把环境弄乱了。

邓邓子的博客 1961

Webpack 4 升级至 Webpack 5 的兼容性问题分析与解决方案

在现代前端开发中,Webpack 作为主流构建工具已经经历了多个版本的迭代。近期许多开发者在使用 Webpack 4 时遇到了 OpenSSL 相关的兼容性问题,这实际上是 Node.js 版本升级带来的连锁反应。本文将深入分析这一问题的根源,并提供专业的技术解决方案。 ## 问题本质分析 当开发者尝试运行 Webpack 4 项目时,常见的错误提示包括: - OpenSSL 初始化错误 - ...

gitblog_01086的博客 573

EM算法求解混合伯努利模型

本文记录了EM算法求解混合伯努利分布的推导,并提供了matlab实验代码。

霁月难逢 彩云易散 6969

DRAM自测试模块

1 背景技术DDR3/4 SDRAM属于高速外设,最高时钟频率可达到1600MHz,最高速率可达3200MT/s。在存储控制器与DDR34 SDRAM设备之间有一层专为高速接口设计的模拟电路,此电路对于前端设计人员来说,不管在模拟验证阶段和回片测试阶段,都是一个黑盒子。而对于后端测试人员来说若此部分为外购IP,则内部结构也是无法清楚了解的。所以在测试阶段,对于DDR34 SDRAM的测试就具有一定的

Hierro的DDR世界 7014

前端构建工具升级实战:从Webpack到Rspack的性能优化与迁移指南

在现代前端工程化领域,构建工具是提升开发效率和项目性能的核心基础设施。其核心原理在于通过模块化打包、代码转换和资源优化,将源代码高效地转换为可在浏览器中运行的产物。随着项目规模扩大,构建性能直接影响团队的开发体验和交付速度。本次实践聚焦于前端构建工具的升级迁移,通过引入基于Rust的高性能工具Rspack,旨在解决大型项目中Webpack构建速度慢、热更新延迟等痛点。该技术方案的价值在于显著提升开发环境的热更新速度和冷启动效率,同时降低内存占用,适用于模块数量多、构建流程复杂的中大型前端项目。整个迁移过程强

weixin_34007906的博客 377

逆向分析美团外卖mtgsig3.0签名算法:从抓包到算法还原实战

在移动应用开发与安全领域,API接口签名是保障数据传输完整性与身份验证的核心机制。其基本原理是通过特定的算法,将请求参数、时间戳等数据与密钥结合,生成唯一的签名串,服务器通过验证签名来识别请求的合法性。这项技术的核心价值在于防止数据篡改、重放攻击和未授权访问,是构建安全客户端-服务器通信的基石。在实际应用中,签名算法广泛应用于电商、社交、金融等各类App的接口保护场景。本文以美团外卖App的mtgsig3.0签名为具体案例,详细拆解了其生成逻辑。通过结合Frida动态调试与Jadx静态分析,文章深入探讨了如

weixin_29325515的博客 1243

【前端性能优化】Webpack性能优化

1. 什么是Webpack? 2. 提高构建速度 2.1 npm install 过程中的优化 2.2 具体仓库地址的选择 2.3 提升Webpack构建速度 3. 打包文件质量优化 3.1 压缩JavaScript代码 3.2 压缩CSS代码 3.3 压缩图片 3.4 优化源代码 3.5 升级Webpack版本

公众号:前端充电宝 1571

SAP 物料账前期没有运行的解决方法

If you use the actual costing (material ledger), you must have completely closed all period-end closing operations in the actual costing for the penultimate period prior to the period shift. Use the '...

含笑饮砒霜死后更嚣张 3316

保姆级教程:用GROMACS的FEP方法计算小分子结合自由能(附完整mdp配置)

本文提供了一份详细的GROMACS自由能微扰(FEP)计算教程,涵盖从系统准备、参数配置到结果分析的全流程。通过具体案例演示如何计算小分子结合自由能,包括λ窗口设计、动力学参数优化及并行化执行技巧,帮助研究者克服FEP计算中的常见问题,获得可靠的自由能数据。

weixin_30598225的博客 353

Webpack 4 升级 5.64.4 实战:开发环境启动优化与3项关键配置调整

本文详细介绍了从Webpack 4升级到5.64.4版本的实战经验,重点解决开发环境启动优化问题。通过环境诊断、开发服务器启动失败排查及三项关键配置调整(如智能化的SplitChunks配置、循环依赖检测和持久化缓存),显著提升构建速度和开发效率。特别针对development server常见报错问题提供了解决方案。

weixin_26833139的博客 232

『与善仁』Appium基础 — 19、元素定位工具之UI Automator Viewer

文章目录(一)uiautomatorviewer定位工具1、uiautomatorviewer介绍2、uiautomatorviewer工具打开方式3、uiautomatorviewer布局介绍4、uiautomatorviewer工具的使用 之前我们在做web页面自动化的时候就说过,元素定位是页面自动化的第一步。 同理App自动化测试的第一步,也是元素的定位。 在APP中定位元素的话,需要借助一些元素定位工具。 APP中的元素定位工具大致有三种: uiautomatorviewer Appium Ins

繁华似锦Fighting 1520

记一次失败的阿里电面

首先抱歉这是一篇流水账, 也不会留下太多有用的东西, 权当提醒大伙, 面试提前准备, 面试中也有偏差, 尤其是电话面试, 失败不要气馁.本人是个前端屌丝. 首先在某招聘app上接到了阿里巴巴的投递邀请, 当然先投一个试试再说, 毕竟阿里有众多前端大神牛人, 技术是业界顶尖水平, 肯定是向往之地. 然后当天很快收到了邮件, 表示会在几个工作日内电话联系.中间过了一个周末, 在昨天, 八月六号晚上七点...

weixin_33720956的博客 141

C# 与 PaddleOCR:一行代码实现高效图片文字识别的实战指南

本文介绍了如何使用 PaddleOCRSharp 进行图像文字识别,涵盖了从环境准备到高级功能的完整流程。首先,通过 NuGet 安装 PaddleOCRSharp 并下载预训练模型。接着,展示了单张图片识别的最小化示例和详细实现,包括模型配置、图片预处理和结果输出。进阶功能部分介绍了多语言和竖排文本识别的实现方法。此外,文章还提供了 WinForms 图形界面开发的完整示例,展示了如何通过界面加载图片、执行识别并展示结果。最后,探讨了批量处理优化策略,如并行处理多张图片以提高性能。通过这些步骤,开发者可以

墨夶的博客 1004

hwasan实例分析踩内存之七:CamX进程chifeature2base怪异的Cause: use-after-free

摘要:本文分析了高通camx进程中的指针异常crash问题,通过构建hwasan版本确认存在内存踩踏现象。日志显示为"use-after-free"类型错误,具体为线程T175672在已释放内存区域执行写入操作。堆栈分析表明ChiFeature2Base::PipelineDestroyCb()函数访问了已被ChiFeature2Base::DestroyFeatureData()释放的pPipelineData对象。该问题源于多线程环境下内存管理不同步,导致释放后仍被引用。解决方案通过

1078

第一次nodejs打包

身为一个后端工程师,被一个前端问题折磨的死去活来,久久不能找到原因。定位问题怎么少得了日志,找前端加日志是可以的,奈何是供应商团队的前端啊,再说他搞半天也没找到问题,算了自己来加吧,心中默念我不入地狱谁入地狱,阿弥陀佛... 前端项目是用vue开发的,通过nodejs webpack打包。我在出问题的js方法里面加了些日志,把前前后后执行的过程、参数数据一一打印出来。改完了,奈何打包成了我遇到的第一个坎坎,毕竟没玩过nodejs,踩了一些坑的,从一个新手的角度记录我部署n...

BABY5845131421的博客 5349

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

2年经验前端社招微信5面全复盘:从简历到HR面,每一轮考察点与真题解析

大厂社招面试并不只看工作年限,更关注候选人对技术原理的理解和项目思考的完整链路。从前端基础、算法编码,到项目深挖、系统设计,再到HR面,每一轮考察点层层递进,2年经验开发者同样可以尝试挑战,关键在于把量化结果和工程决策讲清楚。性能优化、webpack升级、小程序优化等真实项目经历,是支撑深挖追问的核心素材。以微信5面为例,复盘每个环节的真题与应对思路,帮助准备大厂社招的前端开发者理解面试筛选逻辑,把日常工程实践转化为有说服力的面试表达,从而更从容地面对高密度技术追问和跨团队交叉面。

weixin_33829657的博客 361

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

React微前端实战:运行时集成与团队自治落地指南

微前端是一种将大型前端应用拆分为多个独立可部署模块的架构模式,其核心在于运行时集成而非构建时打包。通过Webpack Module Federation实现浏览器端动态加载,保障各子应用技术栈自由、状态隔离与独立发布能力,显著提升多团队协作效率与系统韧性。该方案特别适用于React生态下中大型企业级平台的架构演进,能有效解决单体前端维护难、发版风险高、跨团队协同慢等典型工程痛点,已在电商、CRM、BI等复杂业务场景中稳定支撑80万行以上代码规模的生产系统。

weixin_30843121的博客 339

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

5年前端面试避坑指南:从考察逻辑到高频考点全解析

前端工程师的成长路径中,5年经验是一道清晰的分水岭。当面试官不再追问API用法,转而关注技术选型背后的判断逻辑与工程落地能力时,候选人需要完成从“会写代码”到“能扛事”的认知升级。本文从浏览器事件循环的任务调度机制切入,解析宏任务、微任务与渲染优先级的关系;通过大文件上传场景拆解分片、断点续传与并发控制的系统设计思路;结合微前端架构的演进逻辑,探讨多团队协作下的边界治理;同时涵盖前端监控体系搭建、性能优化问题定位等高频考题。文章还讨论了AI编程工具对开发者角色的影响,以及如何在开放题中体现架构思维与业务敏感

weixin_34211761的博客 433

前端工程师的生存地图:从知识学习到工程落地的5大断层

前端技术栈本质上不是静态知识树,而是动态演化的工程网络——掌握React、Vue等框架语法只是起点,真正决定交付质量的是环境初始化、构建可信度、本地与线上协同、CI/CD自检能力及技术选型权衡等实操维度。这些能力无法通过API文档或教程直接习得,却构成前端工程师应对真实业务压力的核心工程素养。本文聚焦‘学得明白,干得懵圈’这一普遍困境,系统梳理从开发机启动到线上问题归因的完整链路,尤其深入解析环境异构性、协作契约模糊性、线上反馈延迟性三大高频痛点,并以可验证、可测量、可复现为原则,构建面向业务影响与技术深度

世范水晶 778
上一篇: 【前端学习记录】关于使用el-table排序时,默认排序多请求一次的问题
下一篇: 【前端学习记录】MException: Failed to execute ‘setAttribute‘ on ‘Element‘: ‘+‘ is not a valid attribute name
Note_creek
博客等级 码龄10年 372粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值