记一次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

相关文章

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

电脑多久清理一次灰尘合? 合理清理电脑上灰尘的科普文

《电脑多久清理一次灰尘合?合理清理电脑上灰尘的科普文》聊起电脑清理灰尘这个话题,我可有不少话要说,你知道吗,电脑就像个勤劳的工人,每天不停地为我们服务,但时间一长,它也会“出汗”——也就是积累灰尘,... 灰尘的堆积几乎是所有电脑用户面临的问题。无论你的房间有多干净,或者你的电脑是否安装了灰尘过滤器,灰尘都

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文件无法关闭的情况 二、