近期项目部署遇到点问题,需要升级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中分离出来了。所以需要单独下载

两种升级方法:

  1. npm update package@version -D (需要区分是生产依赖还是开发依赖)

  2. 将要下载的版本写进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-loadervue-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 小记的更多相关文章

  1. samsung Galaxy s2(GT i9100g )刷机升级至4.4小记

    从昨天上午到现在,大部分时间都是在将i9100g更新到4.4.虽然中途也做了一些别的事情,但是更新过程还是走了一点弯路,比开始预想的稍微慢了一点,现在将完整的更新步骤分享给大家,以帮助后来的同学.升级 ...

  2. Debian Jessie升级至Stretch小记

    昨天Debian Stretch正式发布.为了尝新,昨天晚上便从Jessie升到了Stretch.结果,早上起来发现系统已无法进入X视窗环境,且NVIDIA的官方驱动无法成功编译和安装.看来,每次系统 ...

  3. [原]Paste.deploy 与 WSGI, keystone 小记

    Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...

  4. mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!

    mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法! 修改mysql5.7的配置文件即可解决,方法如下: linux版:找到mysql的安装路径进入默认的为/usr/shar ...

  5. .NET跨平台之旅:将示例站点从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0

    终于将“.NET跨平台之旅”的示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 ,经历了不少周折,在这篇博文中记录一下. 从 AS ...

  6. MySql 小记

    MySql  简单 小记 以备查看 1.sql概述 1.什么是sql? 2.sql发展过程? 3.sql标准与方言的关系? 4.常用数据库? 5.MySql数据库安装? 2.关键概念 表结构----- ...

  7. Git小记

    Git简~介 Git是一个分布式版本控制系统,其他的版本控制系统我只用过SVN,但用的时间不长.大家都知道,分布式的好处多多,而且分布式已经包含了集中式的几乎所有功能.Linus创造Git的传奇经历就 ...

  8. 广州PostgreSQL用户会技术交流会小记 2015-9-19

    广州PostgreSQL用户会技术交流会小记 2015-9-19 今天去了广州PostgreSQL用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用PostgreSQL-X2 ...

  9. 东哥读书小记 之 《MacTalk人生元编程》

         一直以来的自我感觉:自己是个记性偏弱的人.反正从小读书就喜欢做笔记(可自己的字写得巨丑无比,尼玛不科学呀),抄书这事儿真的就常发生俺的身上. 因为那时经常要背诵课文之类,反正为了怕自己忘记, ...

  10. Paypal支付小记

    Paypal支付小记 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impo ...

随机推荐

  1. 热更学习笔记10~11----lua调用C#中的List和Dictionary、拓展类中的方法

    [10]Lua脚本调用C#中的List和Dictionary 调用还是在上文中使用的C#脚本中Student类: lua脚本: print("------------访问使用C#脚本中的Li ...

  2. Spring 对 Junit4,Junit5 的支持上的运用

    1. Spring 对 Junit4,Junit5 的支持上的运用 @ 目录 1. Spring 对 Junit4,Junit5 的支持上的运用 每博一文案 2. Spring对Junit4 的支持 ...

  3. linux下使用fdisk进行磁盘分区详解

    目录 一.前言 二.关于磁盘分区的结构 三.fdisk命令详解 四.使用fdisk进行磁盘分区 4.1 磁盘分区规划 4.2 fdisk进行磁盘分区 4.3 格式化分区 4.4 创建挂载点/挂载目录 ...

  4. Angular等了三年,那个她已经来了

    Angular生态丰富,功能强大,支撑了许多大型项目的开发.而且一直在前方等待着其他框架跟上.但是不得不直面的一个问题就是:"在等待其他框架跟上的这三年",Angular在陆陆续续 ...

  5. Qt-FFmpeg开发-打开本地摄像头录制视频(7)

    音视频/FFmpeg #Qt Qt-FFmpeg开发-打开本地摄像头录制视频[软解码+ OpenGL显示YUV] 目录 音视频/FFmpeg #Qt Qt-FFmpeg开发-打开本地摄像头录制视频[软 ...

  6. k8s——pod生命周期

    图解 Pod生命周期 Pod的退出流程 Endpoint删除pod的ip地址 Pod变成Terminating状态 变为删除中的状态后,会给pod一个宽限期,让pod去执行一些清理或销毁操作 配置参数 ...

  7. 知乎x-zse-96逆向分析

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...

  8. 解决 Https 站点请求 Http 接口服务后报 the content must be served over HTTPS 错误的问题

    问题分析 之前将自己所有的 Http 站点全部更新为 Https 站点,但是在请求后台接口服务的时候还是 Http 请求,导致部署之后,直接在控制台报 This request has been bl ...

  9. git创建分支 解决git网速太慢

                所谓的分支,就是每个人负责的不同的模块             整个项目有一个主干 master             所有的分支都是 从主干 maser 上 分支而来的   ...

  10. java 中 pop 和 peek 方法区别

    相同点:都返回栈顶的值. 不同点:peek 不改变栈的值(不删除栈顶的值),pop会把栈顶的值删除. 下面通过代码展现 /* * 文 件 名: TestPeekAndPopDiff.java */ i ...