Webpack3.x升级至 4.x 小记
近期项目部署遇到点问题,需要升级webpack版本,特此整理一小记,记录升级过程中的依赖包及报错处理。
本次升级的依赖包及对应版本对照表:
| npm 包 | 当前版本 | 升级版本 | S/D |
|---|---|---|---|
| vue | ^2.5.18 | ^2.6.14 | -S |
| element-ui | ^2.4.11 | ^2.15.8 (为了解决el-date-picker 告警问题) | -S |
| css-loader | ^0.26.4 | ^5.2.7 | -D |
| file-loader | ^1.1.5 | ^6.2.0 | -D |
| html-webpack-plugin | ^2.30.1 | ^4.5.0 | -D |
| less | ^3.13.1 | ^4.1.3 | -D |
| less-loader | ^5.0.0 | ^7.3.0 | -D |
| style-loader | ^0.21.0 | ^2.0.0 | -D |
| url-loader | ^1.1.2 | ^4.1.1 | -D |
| vue-loader | ^12.2.2 | ^15.9.8 | -D |
| vue-template-compiler | ^2.4.2 | ^2.6.14 | -D |
| webpack | ^3.12.0 | ^4.41.5 | -D |
| webpack-cli | --- | ^3.3.10 | -D |
| webpack-dev-server | ^2.9.2 | ^3.10.1 | -D |
webpack-cli:webpack4.x中,webpack-cli已经从webpack中分离出来了。所以需要单独下载
两种升级方法:
npm update package@version -D (需要区分是生产依赖还是开发依赖)
将要下载的版本写进package.json文件中,删除原来的 node_modules, 在执行以下命令即可
npm install rimraf -g
rimraf node_modules
npm cache clean --force
npm install
报错信息整理,
① Error: Cannot find module 'webpack-cli/bin/config-yargs'
原因:是webpack,webpack-cli,webpack-dev-server之间的版本问题。
解决:webpack4.x中,webpack-cli已经从webpack中分离出来。所以需要单独下载
// 如果已经按照上述表格更新依赖,此处无须再次安装
npm install webpack@4.41.5 webpack-cli@3.3.10 webpack-dev-server@3.10.1 -D
②TypeError: Cannot read property 'tap' of undefined
原因:html-webpack-plugin插件版本安装不兼容
解决: 安装 html-webpack-plugin 版本为4.5.0
③ TypeError:Cannot read property ‘vue’ of undefined
④ TypeError: VueLoaderPlugin is not a constructor
原因:vue-loader 和 vue-template-compiler 插件版本安装不兼容
解决:npm install vue-loader@15.9.8 vue-template-compiler@2.6.14 -D
webpack.config.js中使用插件:
const { VueLoaderPlugin } = require('vue-loader')
// 或者
const VueLoaderPlugin = require('vue-loader/lib/plugin');
// ...
plugins: [
new VueLoaderPlugin()
]
⑤ TypeError: this.getOptions is not a function
经过排查发现是由于style-loader的版本不兼容导致的,webpack4 可用的 css 文件的 loader 对应最高版本如下:
"css-loader": "^5.2.7",
"style-loader": "^2.0.0",
"less-loader": "^7.3.0",
⑥ [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "placement"
项目中使用 element-ui ,依赖升级后,el-date-picker 出现以下告警信息, 将element-ui 升级至2.15.8
npm uninstall element-ui
npm install element-ui@2.15.8 -s

Webpack3.x升级至 4.x 小记的更多相关文章
- samsung Galaxy s2(GT i9100g )刷机升级至4.4小记
从昨天上午到现在,大部分时间都是在将i9100g更新到4.4.虽然中途也做了一些别的事情,但是更新过程还是走了一点弯路,比开始预想的稍微慢了一点,现在将完整的更新步骤分享给大家,以帮助后来的同学.升级 ...
- Debian Jessie升级至Stretch小记
昨天Debian Stretch正式发布.为了尝新,昨天晚上便从Jessie升到了Stretch.结果,早上起来发现系统已无法进入X视窗环境,且NVIDIA的官方驱动无法成功编译和安装.看来,每次系统 ...
- [原]Paste.deploy 与 WSGI, keystone 小记
Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...
- mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法! 修改mysql5.7的配置文件即可解决,方法如下: linux版:找到mysql的安装路径进入默认的为/usr/shar ...
- .NET跨平台之旅:将示例站点从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0
终于将“.NET跨平台之旅”的示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 ,经历了不少周折,在这篇博文中记录一下. 从 AS ...
- MySql 小记
MySql 简单 小记 以备查看 1.sql概述 1.什么是sql? 2.sql发展过程? 3.sql标准与方言的关系? 4.常用数据库? 5.MySql数据库安装? 2.关键概念 表结构----- ...
- Git小记
Git简~介 Git是一个分布式版本控制系统,其他的版本控制系统我只用过SVN,但用的时间不长.大家都知道,分布式的好处多多,而且分布式已经包含了集中式的几乎所有功能.Linus创造Git的传奇经历就 ...
- 广州PostgreSQL用户会技术交流会小记 2015-9-19
广州PostgreSQL用户会技术交流会小记 2015-9-19 今天去了广州PostgreSQL用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用PostgreSQL-X2 ...
- 东哥读书小记 之 《MacTalk人生元编程》
一直以来的自我感觉:自己是个记性偏弱的人.反正从小读书就喜欢做笔记(可自己的字写得巨丑无比,尼玛不科学呀),抄书这事儿真的就常发生俺的身上. 因为那时经常要背诵课文之类,反正为了怕自己忘记, ...
- Paypal支付小记
Paypal支付小记 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impo ...
随机推荐
- Python 将PowerPoint (PPT/PPTX) 转为HTML
PPT是传递信息.进行汇报和推广产品的重要工具.然而,有时我们需要将这些精心设计的PPT演示文稿发布到网络上,以便于更广泛的访问和分享.本文将介绍如何使用Python将PowerPoint文档转换为网 ...
- Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
前言 在上一篇<Intel HDSLB 高性能四层负载均衡器 - 快速入门和应用场景>中,我们着重介绍了 HDSLB(High Density Scalable Load Balancer ...
- .NetCore 3.1 教程之 EFCore连接Mysql DBFirst模式 从数据库生成实体
一:创建EF的类库,同时将此项目设置为启动项(为Scaffold-DbContext -tables指令使用),同时安装2个包 ①Microsoft.EntityFrameworkCore.Too ...
- SpringBoot使用@Value获取不到值的问题
背景 在一次SpringBoot项目改造为Cloud的过程中,使用Nacos作为配置中心获取属性,改造后程序启动报错,查看日志,定位到代码: 解决方案 如果了解Bean的生命周期的同学应该知道,Spr ...
- conda错误 创建新环境conda create -n TF117 python=3.5时报错 An unexpected error has occurred. Conda has prepared the above report.
创建新环境conda create -n TF117 python=3.5时报错 An unexpected error has occurred. Conda has prepared the ab ...
- itest(爱测试) 开源接口测试,敏捷测试管理平台10.0.0RC1 发布,重点增加压测功能
一:itest work 简介 itest work 开源敏捷测试管理,包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock,还有压测 ,又有丰富的统计分析,8合1工作站.可按 ...
- kettle从入门到精通 第四十四课 kettle 去重
1.我们平常在写应用程序的时候,会有去重的业务场景,可以在数据库层面解决,也可以在内存层面解决. 同样kettle也有去重的步骤[唯一行(哈希值)]和[去除重复记录] 唯一行(哈希值):使用 Hash ...
- Easysearch 压缩功能的显著提升:从 8.7GB 到 1.4GB
引言 在海量数据的存储和处理中,索引膨胀率是一个不可忽视的关键指标.它直接影响了存储成本和查询性能.近期,Easysearch 在这方面取得了显著的进展,其压缩功能的效果远超过了之前的版本.本文将详细 ...
- 【 INFINI Workshop 上海站】7 月 27 日一起动手实验玩转 Easysearch
[ INFINI Workshop 上海站]7 月 27 日下午 和 INFINI Labs 的技术专家面对面,第一时间了解极限实验室的发布最新产品和功能特性,通过动手实战,快速掌握最前沿的搜索技术, ...
- Django路由层、视图层及模板层
Django路由层 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表; 你就是以这种方式告诉Django,对于客户端发来的某个UR ...