Vue Cli 配置多入口后, plugin 异常问题处理

本文介绍在使用vue-admin-template进行多入口配置时遇到的错误,并提供了详细的解决方案,包括如何正确配置preload以提高首屏加载速度。

使用 vue-admin-template 配置多入口后,执行 vue inspect 出现报错:

Error: Cannot call .tap() on a plugin that has not yet been defined. Call plugin(‘preload’).use() first.

是因为如下代码报错:

   // it can improve the speed of the first screen, it is recommended to turn on preload
    config.plugin('preload').tap(() => [
      {
        rel: 'preload',
        // to ignore runtime.js
        // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171
        fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
        include: 'initial'
      }
    ])

preload 是为了提高首屏加载速度,具体可参考:

对于出现上述的报错,具体原因还是出在vue-cli 的多入口配置,参考 vue cli 文档, 其中对于 pages 部分有一段提示:

当在 multi-page 模式下构建时,webpack 配置会包含不一样的插件 (这时会存在多个 html-webpack-pluginpreload-webpack-plugin 的实例)。如果你试图修改这些插件的选项,请确认运行 vue inspect。

注释掉上边报错部分代码并运行vue inspect,果然发现我的项目中有多个相关实例:

[
  'vue-loader',
  'define',
  'case-sensitive-paths',
  'friendly-errors',
  // 多入口, 多实例
  'html-index', 
  'html-admin',
  'preload-index',
  'prefetch-index',
  'preload-admin',
  'prefetch-admin',
  'copy'
]

解决办法,可以配置多个 config.plugin,也可以编写函数进行统一处理,由于我这里配置较为简单,就直接采用前者。

Ref:

  1. Adding webpack plugin in chainWebpack mode failed
  2. How to configure vue-cli 3.0 pages?

支持一下:

支付码

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

seek-x2y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值