webpack3升级webpack4遇到的各种问题汇总

webpack3升级webpack4遇到的各种问题汇总

问题1

var outputName=compilation.mainTemplate.applyPluginWaterfull('asset-path',outputOptions.filename,{......)TypeError: compilation.mainTemplate.applyPluginsWaterfall is not a function

在这里插入图片描述

解决方法

html-webpack-plugin 版本不兼容问题
升级 npm i --save-dev html-webpack-plugin@next

问题2

Module build failed(from ./node_modules/stylus-loader/index.js):
TypeError:cannot read property 'stylus' of undefined 

在这里插入图片描述

解决方法

需要将stylus-loader的版本更新到3.0.2,就可以
npm uninstall stylus-loader
npm install stylus-loader@3.0.2 --save-dev

问题3

internal/modules/cjs/loader.js:934
Error:cannot find module 'webpack/bin/config-yargs'

在这里插入图片描述

解决方法

这个就是目前版本的webpack-dev-server@2.11.5 不支持 webpack@4以上,需要重装一个webpack-dev-server是3.0版本以上就兼容

问题4

\node_modules\wepbpack\lib\TemplatePathPlugin.js: 
throw new Error(
Error:Path variable[contenthash:8] not implemented in this context:static/css/[name].[contenthash:8].css

在这里插入图片描述

Error: Chunk.entrypoints: Use Chunks.groupsIterable and 
filter by instanceof Entrypoint instead 

在这里插入图片描述

解决方法

extract-text-webpack-plugin还不能支持webpack4.0.0以上的版本。

npm install –save-dev extract-text-webpack-plugin@next 
会下载到+ extract-text-webpack-plugin@4.0.0-beta.0 

注意修改如下配置

config.plugins.push(new ExtractPlugin('styles.[md5:contentHash:hex:8].css')//将[contentHash:8].css改成[md5:contentHash:hex:8].css)

问题5

npm i xxx ,遇到安装包,安装直接报错,如下图

在这里插入图片描述

解决方法

npm i xxx  -D  --force  // 末尾添加--force

问题6

Uncaught TypeError: Cannot assign to read only property ‘exports’ 
of object '#<Object>'

在这里插入图片描述

解决方法

1、npm install babel-plugin-transform-es2015-modules-commonjs -D
2、在 .babelrc 中增加一个plugins
{"plugins": ["transform-es2015-modules-commonjs"]
}

问题7

Insufficient number of arguments or no entry found.

在这里插入图片描述

解决方法

webpack.config.js中的entry入口文件写错,注意自行修改

问题8

Module build failed: TypeError: Cannot read property ‘vue’ of undefined at Object.module.exports (…\node_modules\vue-loader\lib\loader.js:61:18)

在这里插入图片描述

解决方法

安装vue-loader@14.2.2即可
npm install vue-loader@14.2.2

问题9

WARNING in configuration The 'mode' option has not been set, webpack will fallback to ‘production’ for this value.
Set ‘mode’ option to ‘development’ or ‘production’ to enable defaults for each environment. 
You can also set it to ‘none’ to disable any default behavior.

在这里插入图片描述
解决方法

// 给package.json文件中的scripts设置mode
"dev": "webpack --mode development",
"build": "webpack --mode production"

配置webpack.config.js文件

onst path = require('path');
module.exports = {entry: path.join(__dirname, './src/index.js'),//被打包文件所在的路径output: {path: path.join(__dirname, './dist'),//打包文件保存的路径filename: 'main.js'},mode: 'development' // 设置mode
}

问题10

在这里插入图片描述
webpack3 打包用 CommonsChunkPlugin
webpack4 打包用 SplitChunkPlugin

解决方法

把webpack3的代码分割修改为 webpack4的写法即可

示例代码:
chainWebpack(config) {// 使用速度分析config.plugin('speed-measure-webpack-plugin').use(SpeedMeasurePlugin).end()// 删除懒加载模块的 prefetch preload,降低带宽压力(使用在移动端)config.plugins.delete('prefetch')config.plugins.delete('preload')// 路径别名config.resolve.alias.set('@', resolve('src')).set('assets', resolve('src/assets')).set('components', resolve('src/components')).set('pages', resolve('src/pages')).set('utils', resolve('src/utils'))config.when(process.env.NODE_ENV !== 'development', config => {// 生产打包优化config.plugin('ScriptExtHtmlWebpackPlugin').after('html').use('script-ext-html-webpack-plugin', [{// `runtime` must same as runtimeChunk name. default is `runtime`inline: /runtime\..*\.js$/}]).end()// 打包分割config.optimization.splitChunks({chunks: 'all',cacheGroups: {libs: {name: 'chunk-libs',test: /[\\/]node_modules[\\/]/,priority: 10,chunks: 'initial' // only package third parties that are initially dependent},// axios: {//   name: 'chunk-axios', // split axios into a single package//   priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app//   test: /[\\/]node_modules[\\/]_?axios(.*)/ // in order to adapt to cnpm// },lodash: {name: 'chunk-lodash', // split lodash into a single packagepriority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or apptest: /[\\/]node_modules[\\/]_?lodash(.*)/ // in order to adapt to cnpm},vantUI: {name: 'chunk-vantUI', // split vantUI into a single packagepriority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or apptest: /[\\/]node_modules[\\/]_?vant(.*)/ // in order to adapt to cnpm},// vue: {//   name: 'chunk-vue', // split vue into a single package//   priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app//   test: /[\\/]node_modules[\\/]_?@vue(.*)/ // in order to adapt to cnpm// },commons: {name: 'chunk-commons',test: resolve('src/components'), // can customize your rulesminChunks: 3, //  minimum common numberpriority: 5,reuseExistingChunk: true}}})// https:// webpack.js.org/configuration/optimization/#optimizationruntimechunkconfig.optimization.runtimeChunk('single')config.optimization.minimize(true)// 配置删除 console.logconfig.optimization.minimizer('terser').tap(args => {// remove debuggerargs[0].terserOptions.compress.drop_debugger = true// 移除 console.logif (process.env.VUE_APP_BUILD_DROP_CONSOLE == 'true') {args[0].terserOptions.compress.pure_funcs = ['console.log']}// 去掉注释 如果需要看chunk-vendors公共部分插件,可以注释掉就可以看到注释了args[0].terserOptions.output = {comments: false}return args})})}

以上就是我从webpack3升级webpack4遇到的问题,大家又遇到其他什么问题么,有的话评论区来!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/659658.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

scikit-learn:Python中的机器学习-1

简介&#xff1a;问题设置 什么是机器学习&#xff1f; 机器学习是关于构建具有可调参数的程序&#xff0c;这些参数可以自动调整&#xff0c;以便通过适应先前看到的数据来改善其行为。机器学习可以被认为是人工智能的一个子领域&#xff0c;因为这些算法可以被视为构建模块…

实战—登录功能引发的逻辑漏洞

密码找回功能可能存在的漏洞 1.验证码发送后前端返回 2.验证码无次数限制可爆破 3.验证码可控/邮箱篡改为自己的接收短信验证码/手机号码篡改为自己的接收短信验证码 4.越权漏洞—>自己验证码通过改包然后修改他们密码 5.任意用户密码重置 6.密保问题在前端源码 实战…

【AGX】Ubuntu20.04 + ROS_ noetic+ 大疆Mid360激光 雷达评测

大家好&#xff0c;我是虎哥&#xff0c;最近组装机器人&#xff0c;使用到了大疆孵化的圳市览沃科技有限公司&#xff08;简称Livox览沃科技&#xff09;推出的觅道系列全新混合固态激光雷达Mid-360&#xff0c;顺便试试效果&#xff0c;也记录一下使用入门过程。 "觅道M…

如何保证Redis双写一致性?

目录 数据不一致问题 数据库和缓存不一致解决方案 1. 先更新缓存&#xff0c;再更新数据 该方案数据不一致的原因 2. 先更新数据库&#xff0c;再更新缓存 3. 先删除缓存&#xff0c;再更新数据库 延时双删 4. 先更新数据库&#xff0c;再删除缓存 该方案数据不一致的…

【C语言进阶】程序编译中的预处理操作

&#x1f4da;作者简介&#xff1a;爱编程的小马&#xff0c;正在学习C/C&#xff0c;Linux及MySQL.. &#x1f4da;以后会将数据结构收录为一个系列&#xff0c;敬请期待 ● 本期内容讲解C语言中程序预处理要做的事情 目录 1.1 预处理符号 1.2 #define 1.2.1 #define定义标识…

Transformer 模型

Transformer 模型 输入编码多头自注意力机制前馈网络层编码器解码器当前主流的大语言模型都基于 Transformer 模型进行设计的。Transformer 是由多层的多头自注意力模块堆叠而成的神经网络模型。原始的 Transformer 模型由编码器和解码器两个部分构成,而这两个部分实际上可以独…

【imazing骗局】imazing软件安全吗 需要越狱吗 为什么iPhone都会装iMazing来管理

鉴于苹果设备的封闭性与安全性&#xff0c;我们大部分情况下都需要搭配iTunes进行设备的管理。但作为一款全方位的iOS设备管理软件&#xff0c;iMazing竟然可以突破iTunes的限制&#xff0c;与设备直接连接&#xff0c;进行备份、管理等操作。 因此&#xff0c;很多人都会有疑…

simulink常用逻辑功能模块(第二篇)

简介 基于simulink提供的组件&#xff0c;构建常用的逻辑功能模块。 往期 simulink常用逻辑功能模块 1. 按键模拟 功能&#xff1a;按键按下&#xff08;视为输入一段短暂有效的高电平&#xff09;时&#xff0c;输出高电平1&#xff0c;再次按下按键&#xff0c;输出低电…

Pytest切换测试环境:使用hooks函数、pytest-base-url插件

Pytest切换测试环境&#xff1a;使用hooks函数、pytest-base-url插件 1.使用hooks函数2.使用pytest-base-url插件安装pytest-base-url使用 1.使用hooks函数 # conftest.py#Initialization hooks 初始化钩子: 添加自定义命令行选项 def pytest_addoption(parser):parser.addopt…

Go 语言变量

变量来源于数学&#xff0c;是计算机语言中能储存计算结果或能表示值抽象概念。 变量可以通过变量名访问。 Go 语言变量名由字母、数字、下划线组成&#xff0c;其中首个字符不能为数字。 声明变量的一般形式是使用 var 关键字&#xff1a; var identifier type 可以一次声…

如何防止源代码泄露?6种企业防泄密解决方案

在数字化转型浪潮中&#xff0c;源代码成为企业宝贵的核心资产&#xff0c;其安全性直接关系到企业的生存和发展。源代码泄露不仅会导致商业秘密外泄&#xff0c;还可能造成严重的经济损失和品牌信誉下降。为此&#xff0c;采用高效的防泄密措施&#xff0c;如华企盾DSC数据防泄…

如何打造有吸引力的线上博物馆?解锁3D文物新玩法?

近年来&#xff0c;博物馆越来越重视运用丰富多元的3D数字化技术提升展陈效果&#xff0c;博物馆3D数字化升级已经是大势所趋。 优质的数字化服务&#xff0c;可以拓宽博物馆的辐射范围&#xff0c;更加全面展现博物馆藏品的珍贵价值。51建模网提供的3D数字化解决方案&#xff…