记一次webpack2升级为webpack4的爬坑之路

2024-04-25 17:48

本文主要是介绍记一次webpack2升级为webpack4的爬坑之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        webpack4官方发布以来,很多博主都已经上手开撸了,但是大体都是对着API新配置一份,我今天尝试了一下将我们公司的webpack2项目迁移到webpack4,下面是记录的几个坑。

一、环境准备

    1、node 6.10+

    2、下载webpack4  

 npm install webpack@4 -D

二、根据控制台错误一个一个的修改

问题1、

WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.- configuration.module has an unknown property 'loaders'. These properties are valid:

解决1:将webpack.conf.js中的 loaders 改成 rules 。(ps有多少改多少!)


问题2、TypeError: compilation.mainTemplate.applyPluginsWaterfall is not a function

解决2:网上有很多说是下载 webpack-contrib/html-webpack-plugin 这个官方临时插件解决,但是当我去下的时候发现已经下不了了,很遗憾!

过去的解决办法npm install webpack-contrib/html-webpack-plugin -D

不过现在有了正式版

现在的解决办法npm install html-webpack-plugin@3.2.0 -D


问题3、Cannot read property 'babel' of undefined

解决3:

npm install babel-loader@7 -D


问题4、Cannot read property 'vue' of undefined 

解决4:

npm install vue-loader@14 -D


问题5、Module build failed (from ./node_modules/css-loader/index.js)

解决5:style-loader和css-loader书写位置不能错,并跟新url-loader@1+file-loader@1

{test: /\.css$/, use: ['style-loader','css-loader']},
npm install url-loader@1 -D
npm install file-loader@1 -D

这5个问题弄完之后,项目就可以成功跑起来了,然后需要什么配置再自己看文档添加即可,最后附上我的package.json供大家参考

{"name": "","version": "1.0.0","description": "Resource Sharing Platform","author": "","private": true,"scripts": {"dev": "node build/dev-server.js","start": "node build/dev-server.js","build": "node build/build.js"},"dependencies": {"jquery": "^3.2.1","vue": "^2.2.6","vue-router": "^2.3.1","webpack": "^4.12.0"},"devDependencies": {"autoprefixer": "^6.4.0","babel-core": "^6.0.0","babel-loader": "^7.1.4","babel-plugin-transform-runtime": "^6.0.0","babel-preset-es2015": "^6.0.0","babel-preset-stage-2": "^6.0.0","babel-register": "^6.0.0","clean-webpack-plugin": "^0.1.13","connect-history-api-fallback": "^1.1.0","css-loader": "^0.28.11","eventsource-polyfill": "^0.9.6","express": "^4.13.3","extract-text-webpack-plugin": "^2.0.0","file-loader": "^1.1.11","function-bind": "^1.0.2","glob": "^7.1.1","html-webpack-plugin": "^3.2.0","http-proxy-middleware": "^0.17.2","json-loader": "^0.5.4","opn": "^4.0.2","ora": "^0.3.0","shelljs": "^0.7.4","style-loader": "^0.21.0","url-loader": "^1.0.1","vue-loader": "^15.2.4","vue-resource": "^1.3.1","vue-style-loader": "^4.1.0","vue-template-compiler": "^2.5.16","webpack-cli": "^3.0.6","webpack-dev-middleware": "^1.8.3","webpack-hot-middleware": "^2.12.2","webpack-merge": "^4.1.0"}
}


这篇关于记一次webpack2升级为webpack4的爬坑之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/935376

相关文章

macOS升级后SVN升级

问题 svn: error: The subversion command line tools are no longer provided by Xcode. 解决 sudo chown -R $(whoami) /usr/local/Cellar brew install svn

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

(function() {})();只执行一次

测试例子: var xx = (function() {     (function() { alert(9) })(); alert(10)     return "yyyy";  })(); 调用: alert(xx); 在调用的时候,你会发现只弹出"yyyy"信息,并不见弹出"10"的信息!这也就是说,这个匿名函数只在立即调用的时候执行一次,这时它已经赋予了给xx变量,也就是只是

JeecgBoot 升级springboot版本到2.6.0

1. 环境描述 Jeecgboot 3.0,他所依赖的springboot版本为2.3.5Release,将springboot版本升级为2.6.0。过程全纪录,从2开始描述。 2. 修改springboot版本号 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pare

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

欧拉系统 kernel 升级、降级

系统版本  cat  /etc/os-release  NAME="openEuler"VERSION="22.03 (LTS-SP1)"ID="openEuler"VERSION_ID="22.03"PRETTY_NAME="openEuler 22.03 (LTS-SP1)"ANSI_COLOR="0;31" 系统初始 kernel 版本 5.10.0-136.12.0.

jmeter之仅一次控制器

仅一次控制器作用: 不管线程组设置多少次循环,它下面的组件都只会执行一次 Tips:很多情况下需要登录才能访问其他接口,比如:商品列表、添加商品到购物车、购物车列表等,在多场景下,登录只需要1次,我们期望的是重复执行登陆后面的接口来做压测,这就和事务相关,例如 事务1: 登录—>添加购物车 事务2: 登录—>购物车列表 事务3: 登录—>商品列表—>添加购物车 … 一、仅一次控制器案例 在

Zookeeper集群是如何升级到新版本的

方案1:复用老数据方案 这是经过实践的升级方案,该方案是复用旧版本的数据,zk集群拓扑,配置文件都不变,只是启动的程序为最新的版本。 参考文章: Zookeeper集群是如何升级到新版本的 方案2:重新建立数据方案 该方案的思路是:先停掉一台follower的机器上的服务,然后加入一个新版本的zk(zk的数据目录是空的),然后启动新zk,之后新zk会把旧集群中的数据同步过来。之后再操作另

一次生产环境大量CLOSE_WAIT导致服务无法访问的定位过程

1.症状 生产环境的一个服务突然无法访问,服务的交互过程如下所示: 所有的请求都是通过网关进入,之后分发到后端服务。 现在的情况是用户服务无法访问商旅服务,网关有大量java.net.SocketTimeoutException: Read timed out报错日志,商旅服务也不断有日志打印,大多是回调和定时任务日志,所以故障点在网关和商旅服务,大概率是商旅服务无法访问导致网关超时。 后

关于一次速度优化的往事

来自:hfghfghfg, 时间:2003-11-13 16:32, ID:2292221你最初的代码 Button1 34540毫秒 5638毫秒  Button2 我的代码 这个不是重点,重点是这个  来自:hfghfghfg, 时间:2003-11-13 16:54, ID:22923085528毫秒 不会吧,我是赛杨1.1G  128M内存  w2000, delphi6  128M