Skip to main content

webpack5.24.2和vue-loader15.9.6 配置文件中引入插件new VueLoaderPlugin()后打包报错

· 预计阅读时间:1 分钟
摘要

当我使用 webpack5.24.2和vue-loader15.9.6 打包Vue时报错TypeError: The 'compilation' argument must be an instance of Compilation

报错信息#

运行webpack命令打包时报错,错误信息如下

TypeError: The 'compilation' argument must be an instance of Compilation

情景分析#

应该是通过webpack打包vue时报错,我使用的webpack的版本是5.24.2,vue-loader是15.9.6 按照vue-loader15的要求在webpack.config.js配置文件中引入了VueLoaderPlugin并且在plugins中配置了 new VueLoaderPlugin()

当我未在plugins中配置 new VueLoaderPlugin()就进行打包时确实报错提醒我需要引入vue-loader的这个插件,但我引入之后打包就报现在这个错误

TypeError: The 'compilation' argument must be an instance of Compilation

我初步认为是引入该插件引起的

我在网上找到一个一样的错误,也是引入插件后报了该错误,但是是 new HtmlWebpackPlugin()插件,基本确定为:webpack5和HtmlWebpackPlugin版本的兼容性问题,解决办法是升级HtmlWebpackPlugin的版本或者将webpack5卸载安装webpack4 查看相关详情

报错原因#

根据以上情况分析初步得出是webpack5.24.2,vue-loader15.9.6中使用new VueLoaderPlugin()的版本兼容问题

解决办法#

当我降低了vue-loader版本为14.2.4之后即可以正常打包了

npm i vue-loader@14 --save-dev
注意: vue-loader14版本不需要在webpack.config.js文件中单独引入VueLoaderPlugin并配置到plugins;这是vue-loader15以后的规定

查看vue-loader15相关详情