首页 > 其他分享 >qiankun vue子应用升级webpack5问题记录

qiankun vue子应用升级webpack5问题记录

时间:2023-04-26 18:33:53浏览次数:60  
标签:webpack5 vue cli 配置 qiankun options css

升级的方式是使用最新版本的 vue-cli 脚手架,重新创建一个新项目,然后复制 @vue/cli-xxx , vue 相关依赖最新版本到子应用项目 -> 核对babel, eslint相关配置的变化 -> 重新安装依赖,处理出现的相各种异常情况 -> 启动项目检查功能是否正常。

本次升级主要是为了使用 webpack5

以下是记录的遇到的各种问题(不只包含webpack5的问题)。

configuration.output has an unknown property 'jsonpFunction'.

qiankun子应用需要按照官方文档进行webpack配置。

module.exports = {
  output: {
    library: `${packageName}-[name]`,
    libraryTarget: 'umd',
    jsonpFunction: `webpackJsonp_${packageName}`,
  }
};

以上示例中的 jsonpFunction 配置在 webpack5 中已经被删除,替换为 chunkLoadingGlobal,它们的作用都是提供一个唯一的名称。

module.exports = {
  output: {
    library: `${name}-[name]`,
    libraryTarget: 'umd',
    chunkLoadingGlobal: `webpackJsonp_${name}` // 替换配置
  }
};

options has an unknown property 'overlay'. | options has an unknown property 'disableHostCheck'.

webpack5 中 devServer.overlay 调整为 devServer.client.overlay

webpack5 中 devServer.disableHostCheck 移除,使用 devServer.allowedHosts 替换。

ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema.options has an unknown property 'plugins'.

webpack5 中 postcss-loader 配置调整,增加一层 postcssOptions

eslint 相关错误

更新了 eslint 依赖包版本,eslint规则发生变化,会出现一些错误提示。按照提示进行修改或者调整规则。

Cannot GET /cooperation/board

主应用载入子应用资源时,找不到子应用资源。

在分析原因的过程中,并没有在 webpack5 的配置中找到原因,考虑到使用的是 vue-cli 脚手架,然后脚手架使用的 webpack5 , 所以搜索了 vue-cli的改动记录。

在这个PR中找到了原因。 https://github.com/vuejs/vue-cli/pull/6162

this PR will restrict request headers of historyApiFallback only work with [ 'text/html', 'application/xhtml+xml']

qiankun加载子应用时发起的fetch请求,且请求头里面没有 text/html 等header。所以historyApiFallback 配置对它无效。而本项目又是 history 模式路由,所以带路由 /xxx/xxx 过来请求,就会 404.

修改方案为自己传入historyApiFallback 配置.

    historyApiFallback: {
      index: '/xxx/index.html' // xxx为路径,和打包output配置有关
    },

Invalid options in vue.config.js: "css.requireModuleExtension" is not allowed

此问题为 vue-cli 升级导致的。

有个微应用使用了 css modules 方案,配置了 在 vue.config.js 中配置了 css.requireModuleExtension ,而该字段在 V5 版本中已经移除。https://github.com/vuejs/vue-cli/issues/6607 。用以下 css-loader配置来替代。

module.exports = {
  css: {
    loaderOptions: {
      css: {
        modules: {
          auto: () => true
        }
      }
    }
  }
}

less版本升级导致除法写法未转换

此问题是 less 版本升级导致。

有个微应用 less版本由 3.x 升级到 4.x 后,发现样式有问题。 后定位发现 padding: @m-gap / 2 @m-gap; 转换为了 padding: 16px / 2 16px,除法未做计算。

其原因是 https://less.bootcss.com/usage/#lessjs-options-math , 4.x 中修改了math的默认配置。 (@m-gap / 2) 或者 (@m-gap ./ 2) 才会默认转换。

标签:webpack5,vue,cli,配置,qiankun,options,css
From: https://www.cnblogs.com/shapeY/p/17356945.html

相关文章

  • vue-router3.x和vue-router4.x相互影响的问题记录
    背景项目中有一个系统使用的微前端,主站使用是vue2实现的,使用的是vue-router3.x。子应用有使用vue3实现的,使用的为vue-router4.x。该子应用中的页面A有通过操作按钮触发跳转到其他子应用页面B的需求,此时使用的是vue-router4.x的编程式导航API。当通过点击主站的Tab切换回B的时候......
  • 记录-Vue移动端日历设计与实现
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助工作中遇到一个需求是根据日历查看某一天/某一周/某一月的睡眠报告,但是找了好多日历组件都不是很符合需求,只好自己手写一个日历组件,顺便记录一下。先看看UI给的设计图和,需求是有数据的日期做标记,可以查看某一周/......
  • vue-router4 配置懒加载 页面加载时展示loading
     懒加载写法{path:"/",name:"index",component:()=>import("../views/Home.vue"),}创建Loading组件并引入到顶层组件中使用store控制loading组件是否展示包装懒加载写法constlazyLoad=(componentPath)=>{//注意:componentPath不......
  • 如何实现vue项目中使用Baidu Map,有多个点,鼠标移入出现文字标注,移除消失文字标注,并且点
    直接来案例,再分析;<template> <divref="map"style="height:100vh;"></div></template><script>exportdefault{ data(){  return{   points:[    {lng:116.404,lat:39.915,name:'北京天安门......
  • vue-router学习笔记
    1.路由基础配置 https://router.vuejs.org/zh/guide/2.动态路由根据设置的路径参数实现 constroutes=[//动态字段以冒号开始{path:'/users/:id',component:User},]。需要注意的是参数改变时(第一次访问该路径后,第二次起),组件实例被重复使用,会导致vue的生命周期......
  • vue主应用,qiankun 子应用切换主应用样式错乱问题
    vue主应用,qiankun子应用切换主应用样式错乱问题 constchildRoute=['/flinkdashboard','/dolphinscheduler','/datainsight']//子应用路径constisChildRoute=(path)=>childRoute.some(item=>path.startsWith(item));constrawAppendChild=......
  • vue-cli使用方法
    是什么?vue-clivuecommandlineinterface是vue命令行接口工具怎么用?1.安装npm:【Win7】只支持node.jsv13.14.0或更早1)到官网下载https://nodejs.org/download/release/v13.14.0/node-v13.14.0-x64.msi2)注意在安装node.js时,勾选“Automaticallyinstalltheneces......
  • 若依vue框架添加kotlin依赖,实现kotlin和java混合编译
    第一步:在最外部pom.xml文件添加版本号和依赖管理properties添加版本号<kotlin.version>1.4.21</kotlin.version><!--启用kotlin增量编译--><kotlin.compiler.incremental>true</kotlin.compiler.incremental>dependencyManagement添加依赖管理<!-......
  • vue3 uniapp Uncaught (in promise) TypeError: Cannot read properties of null (rea
    引发这个问题是在三级页面中使用uni.navigateBack({delta:2})返回到一级页面再重一级页面进入二级页面二级页面中引用的组件引发的emitsOptions报错//原因:我在二级页面中的组件使用ts的emit写法引发的报错constemit=defineEmits<{(e:'confirm',contents:string):......
  • vue3中useRouter和useRoute的使用
    vue3路由新玩法useRoute和useRouter详解原文链接原来的vue2路由是通过this.$route和this.$router来控制的。现在vue3有所变化,useRoute相当于以前的this.$route,而useRouter相当于this.$router一、useRouter手动控制路由变化import{useRouter}from'vue-router'exportdef......