当前位置: 首页 > ops >正文

微前端qiankun框架,子页面图标样式错乱问题,显示为X

问题

quankun官方文档

使用qiankun加载子页面,子页面是element-ui组件库,用vue2来开发,图标出现了样式错乱,显示为X

在这里插入图片描述

loadMicroApp 下子应用的图标(ElementUI/iconfont)不见,99% 是资源路径 / 样式隔离 / 跨域导致字体文件没被正确加载。按下面顺序改,

1、entry 要用源地址(不要带 #

entry 是要去拉子应用 index.html 的地址,不要写路由 hash。

const app = loadMicroApp({name: 'app1',entry: 'http://127.0.0.1:8081/',   //  正确;不要 'http://127.0.0.1/#/'container: '#micro-container',props: { userInfo: resp.data },sandbox: { experimentalStyleIsolation: true } // 见第3点,可切换验证
})

端口按你的子应用 devServer 实际端口改。


2、 子应用必须启用 runtime publicPath

否则 css/js/字体会当成“相对主应用”的路径去请求,导致 404 或请求错域。

子应用:
src/public-path.js

if (window.__POWERED_BY_QIANKUN__) {__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}

src/main.js 顶部第一行:

import './public-path'

vue.config.js

  • webpack v4:
const packageName = require('./package.json').name;module.exports = {publicPath: '/',  // 让资源走运行时 publicPathdevServer: {port: 8081,headers: { 'Access-Control-Allow-Origin': '*' } // 见第4点},configureWebpack: {output: {library: `${packageName }-[name]`,libraryTarget: 'umd',jsonpFunction: `webpackJsonp_${packageName }`,}}
}
  • webpack v5:
const packageName = require('./package.json').name;module.exports = {publicPath: '/',  // 让资源走运行时 publicPathdevServer: {port: 8081,headers: { 'Access-Control-Allow-Origin': '*' } // 见第4点},configureWebpack: {output: {library: `${packageName}-[name]`,libraryTarget: 'umd',chunkLoadingGlobal: `webpackJsonp_${packageName}`,}}
}

3、 样式隔离与外链字体

experimentalStyleIsolation 开启后用 Shadow DOM,有些 外链 的 css 里相对 url 字体可能失效。

  • 切换验证

    • 如果你现在开着:改为 sandbox: { experimentalStyleIsolation: false }
    • 如果你现在关着:尝试开成 true
  • 长期修复任选其一:

    • 把图标 CSS 走打包import 'element-ui/lib/theme-chalk/index.css' 或本地化 iconfont.css),让 webpack 处理 url(),自动拼上 publicPath。
    • 或把 iconfont 换成 CDN 绝对地址(https/同域),避免相对路径。

http://www.xdnf.cn/news/18445.html

相关文章:

  • 人脸识别驱动的工厂人体属性检测与预警机制
  • Conmi的正确答案——Ubuntu24.04禁用任何休眠
  • huggingface离线下载模型使用方法
  • CAN总线工具学习:DBC解析、设备扫描与报文监控
  • Logstash——性能、可靠性与扩展性架构
  • JAVA后端开发——API状态字段设计规范与实践
  • Claude Code接入Serena mcp
  • Elasticsearch Rails 集成(elasticsearch-model / ActiveRecord)
  • [激光原理与应用-317]:光学设计 - Solidworks - 零件、装配体、工程图
  • 浅拷贝,深拷贝
  • 【生成树+环】题解:P3907 环的异或_图论_环_异或_搜索_算法竞赛_C++
  • 【C++】多态(详解)
  • 单片机---------WIFI模块
  • 智能二维码QR\刷IC卡\人脸AI识别梯控系统功能设计需基于模块化架构,整合物联网、生物识别、权限控制等技术,以下是多奥分层次的系统设计框架
  • openEuler系统中home文件夹下huawei、HwHiAiUser、lost+found 文件夹的区别和作用
  • Linux:网络层IP协议
  • Spring Web MVC
  • 36v转5v峰值电流7A同步DC/DC降压芯片AH8655
  • C#开源库ACadSharp读取dwg图元的示例
  • Springboot项目的各层级详细总结
  • 【GaussDB】全密态等值查询功能测试及全密态技术介绍
  • Python socket远程部署工具服务
  • 论文阅读:Do As I Can, Not As I Say: Grounding Language in Robotic Affordances
  • 基于Django的学校实验室预约管理系统/基于python的实验室管理系统的设计与实现#python#django#FLASK
  • Spring Start Here 读书笔记:第9章 Using the Spring web scopes
  • Excel表格指定数据读取写入到另一个Excel表中(指定列指定行)
  • CXR-LT 2024:一场关于基于胸部X线的长尾、多标签和零样本疾病分类的MICCAI挑战赛|文献速递-深度学习人工智能医疗图像
  • 前端AI工具——TRAE
  • ExcelUtils实现 设置内容 插入行 复制行列格式
  • Blender模型动画导入到UE5