美文网首页
[VUE报错] npm的lib库打包模式,引用时 ChunkLo

[VUE报错] npm的lib库打包模式,引用时 ChunkLo

作者: Twins_YSQ | 来源:发表于2022-07-01 17:39 被阅读0次

适用前提:

仅适用引用lib库出现的问题.
不适用route路由出现的问题(思路可以参考, 但是解决方案不同)

报错原理:

因为使用了懒加载, webpack编译时, 转译分包引用路径为 “基于网页根目录”, 而我们目标是 node_modules/<projectName>/lib/ 下的分包.
所以, 我们在网页根目录的js目录下自然找不到对应懒加载分包.

对应速查术语和关键词:

lazyCompoents
vue-cli-service build --target lib
xxx.umd.min.js

解决思路介绍:

第一种: 使用分包时, 转移至 网页根目录的js目录下(http://host/js/xxx.js)
第二种: 合并分包为唯一主包
第三种: 代码内不使用懒加载

解决方案:

第一种: 使用分包时, 转移至 网页根目录的js目录下(http://host/js/xxx.js)

使用CopyWebpackPlugin插件, 当网页访问指定文件时, 复制对应文件至指定目录

// vue.config.js
const CopyWebpackPlugin = require('copy-webpack-plugin')

module.exports = {
  configureWebpack: {
    plugins: [new CopyWebpackPlugin([
      {
        context: 'node_modules/admin-crud/lib/', // 作用域   注意: admin-crud/lib 要改成你的
        from: '*.umd.min.*.js',  // 检测的文件
        to: 'js/',  // 复制的目的地
        toType: 'dir' // 目的地类型
      }
    ])]
  }
}

缺点: 需写在主项目的vue.config.js中
优点: 真正的懒加载

第二种: 合并分包为唯一主包

使用webpack限制只能生成一个包

//vue.config.js
const webpack = require('webpack')

module.exports = {
   configureWebpack: {
     plugins: [
       new webpack.optimize.LimitChunkCountPlugin({
         maxChunks: 1  // 限制只打一个包,不分Chunk
       })
     ]
   }
}

缺点: 都只生成一个包了, 这是假的懒加载.
优点: 写在npm项目的vue.config.js中

第三种: 代码内不使用懒加载

优点: 简单
缺点: 大

相关文章

网友评论

      本文标题:[VUE报错] npm的lib库打包模式,引用时 ChunkLo

      本文链接:https://www.haomeiwen.com/subject/jmwcbrtx.html