【qiankun】前端微服务架构踩坑记录

这篇具有很好参考价值的文章主要介绍了【qiankun】前端微服务架构踩坑记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

1.Cannot GET /cooperation/board

场景:

分析

解决

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

原因

解决

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

原因

解决

4.主子应用样式隔离

场景

解决

5.在webpack5中配置output报错

报错如下

 原因

 解决

6.微应用部署后报错

场景

报错如下

 原因

解决


前言

最近公司前端项目在重构,我经过调研后架构确定为bff+qiankun微服务。bff还没开始呢,微服务这块遇到了很多问题,也使用了一段时间了,临时总结一下:

1.部署阶段最容易踩坑

2.是路由切换问题容易踩坑

3.主应用和子应用之间的依赖冲突和样式冲突

以后会持续更新~


1.Cannot GET /cooperation/board

场景:

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

分析

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

在这个PR中找到了原因。 fix(cli-service): restrict request headers of historyApiFallback in WebpackDevServer by githoniel · Pull Request #6162 · vuejs/vue-cli · GitHub

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配置有关
    },

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


原因

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

有个微应用使用了 css modules 方案,配置了 在 vue.config.js 中配置了 css.requireModuleExtension ,而该字段在 V5 版本中已经移除。"css.requireModuleExtension" is not allowed · Issue #6607 · vuejs/vue-cli · GitHub 。用以下 css-loader配置来替代。

解决

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

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

原因

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

其原因是 Less.js 用法 | Less.js 中文文档 - Less 中文网 , 4.x 中修改了math的默认配置。 (@m-gap / 2) 或者 (@m-gap ./ 2) 才会默认转换。

解决

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


4.主子应用样式隔离

场景

一个典型的场景是主应用使用vue3+elementplus,子应用使用vue2+elementUI.首先说明一点乾坤对于子应用之间是自带样式隔离的,但是主子应用之间没有,那这不可避免地带来样式冲突问题(也包括第三方样式库,比如elementui)

解决

 解决方式有3种,第一种是手动设置样式名(不好用),第二种是使用css moducles 插件

我使用的第三种,在elementplus的2.2版本及以上有了命名空间,可以给所有的样式修改一个前缀,比如说:.el-button,我们可以换成ep-button,这样就避免了主应用和子应用使用相同的样式库带来的冲突问题


5.在webpack5中配置output报错

报错如下

【qiankun】前端微服务架构踩坑记录,前端微服务,前端,架构,vue.js,reactjs

 原因

jsonpFunction在webpack5被chunkLoadingGlobal替代

 解决

configureWebpack: {
        output: {
          library: `${name}-[name]`,//6.接入乾坤
          libraryTarget: 'umd', // 把微应用打包成 umd 库格式
          chunkLoadingGlobal: `webpackJsonp_${name}`, 
        //   jsonpFunction在webpack5: `webpackJsonp_${name}`,
         // jsonpFunction在webpack5被chunkLoadingGlobal替代
        },
      },

6.微应用部署后报错

场景

部署后刷新页面,url地址栏 回车时报错

报错如下

关键字:Expected a JavaScript module script but the server responded with a MIME type of

【qiankun】前端微服务架构踩坑记录,前端微服务,前端,架构,vue.js,reactjs

 原因

vite静态资源路径配置问题

解决

publicpath之前是‘ ./’改为‘/’ 

官方文档说的是‘./’用于开发环境的文章来源地址https://www.toymoban.com/news/detail-550229.html

到了这里,关于【qiankun】前端微服务架构踩坑记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

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

    2023年04月26日
    浏览(34)
  • 基于vue3+webpack5+qiankun实现微前端

    一 主应用改造(又称基座改造) 1 在主应用中安装qiankun(npm i qiankun -S)  2 在src下新建micro-app.js文件,用于存放所有子应用。  3 改造vue.config.js,允许跨域访问子应用页面  4 改造main.js   5 在App.vue中写响应跳转子应用(根据自己的项目找对应位置写,不局限于App.vue)   需要注

    2024年02月13日
    浏览(53)
  • 07. vue3+vite+qiankun搭建微应用前端框架,并接入vue3微应用

    因为业务系统接入的需要,决定将一个vue3+vite+ts的主应用系统,改造成基于qiankun的微应用架构。此文记录了改造的过程及vue3微应用接入的种种问题。 网上有很多关于微应用改造的案例,但很多都没写部署之后什么情况。写了部署的,没有实操部署在二级目录、三级目录是什

    2024年01月16日
    浏览(56)
  • 微前端使用qiankun实现,react主应用同时兼顾react,vue3,umi子应用

    理解 :我们可以简单理解为微前端是将一个项目拆分成多个模块,每个微前端模块可以由不同的团队进行管理,并可以自主选择框架,并且有自己的仓库,可以独立部署上线 应用场景 :1.当公司代码较老需要使用新的技术栈时我们可以使用微前端。2.多个团队同时开发时,每

    2024年02月09日
    浏览(53)
  • 前端(三)React踩坑记录

            作者最近新的平台项目是需要用react的,和vue区别还是比较大的,这里记录下踩坑和使用经验。         框架:antd         依赖:         不知道是react本身编译规则严苛,还是公司的pipline设定,代码里面编译的时候不允许有未使用的变量,不允许使用未导入的组

    2024年04月24日
    浏览(24)
  • qiankun微服务怎么用,怎么实现集成react和vue

    Qiankun 是一个能够帮助开发者实现微前端的框架,它可以支持多种前端框架的混合开发,包括 React、Vue 等。下面我将详细介绍如何使用 Qiankun 实现集成 React 和 Vue。 Qiankun 是一个基于 Single-SPA 的微前端解决方案,它是由阿里巴巴前端团队开发的。Qiankun 提供了一套完整的微前端

    2024年02月13日
    浏览(36)
  • 什么是Vue的前端微服务架构(Micro Frontends)?

    前端微服务架构(Micro Frontends)是一种新型的前端架构风格,它借鉴了后端微服务架构的思想,将前端应用程序拆分为多个小型、独立的部分,每个部分都可以独立部署、独立开发和独立运行。这种架构风格可以帮助前端开发人员更好地管理复杂的前端应用程序,提高开发效

    2024年02月15日
    浏览(27)
  • 微前端-qiankun:vue3-vite 接入 vue3、nuxt3、vue2、nuxt2等子应用

    一、了解qiankun.js qiankun - qiankun 1.1、简单, 任意 js 框架均可使用。微应用接入像使用接入一个 iframe 系统一样简单,但实际不是 iframe。 1.2、完备, 几乎包含所有构建微前端系统时所需要的基本能力,如 样式隔离、js 沙箱、预加载等。解耦,与技术无关。 1.3、生产可用, 已

    2024年02月03日
    浏览(63)
  • 前端项目部署自动检测更新后通知用户刷新页面(前端实现,技术框架vue、js、webpack)——方案一:编译项目时动态生成一个记录版本号的文件

    当我们重新部署前端项目的时候,如果用户一直停留在页面上并未刷新使用,会存在功能使用差异性的问题,因此,当前端部署项目后,需要提醒用户有去重新加载页面。 vue、js、webpack 编译项目时动态生成一个记录版本号的文件 轮询(20s、自己设定时间)这个文件,判断版

    2024年02月02日
    浏览(54)
  • vue+neo4j +纯前端(neovis.js / neo4j-driver) 实现 知识图谱的集成 大干货--踩坑无数!!!将经验分享给有需要的小伙伴

    简单来说,这是一种比较热门的图数据库,图数据库以图形形式存储数据。 它以节点,关系和属性的形式存储应用程序的数据。 一个图由无数的节点和关系组成。 安装图数据库在这里就不介绍了,本篇主要介绍如何连接neo4j数据库,将知识图谱成功显示在前端页面中。 1.、

    2024年02月02日
    浏览(218)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包