美文网首页
微应用没有挂载成功

微应用没有挂载成功

作者: LXEP | 来源:发表于2022-12-07 08:57 被阅读0次

背景

主应用部署的目录为portal,子应用部署目录为sub/sub-child
独立访问方式:

  • 主应用:http:xxx.com/portal
  • 子应用:http:xxx.com/sub/sub-child

解决思路

主应用和子应用分别部署在非根目录下,qiankun需要主应用与子应用路由一致,否则子应用就无法挂载成功,由于主应用自动添加了base,所以子应用需要与其一致,使用umi4中的提供的方法,从主应用将basename传递过来,然后子应用在运行时将它加到base中。

主应用的配置修改为:

// config/config.ts
const { UMI_ENV } = process.env;

export default defineConfig({
  base: UMI_ENV === 'dev' ? '/' : '/portal',
}

主应用的入口文件修改为:

// app.tsx
export const qiankun = api.getxxx().then(({ data }) => {
  return {
    apps: [
      {
        name: 'child',
        entry: CurrentEnvironment === 'dev' ? '//localhost:8000' : 'http://xxx.com/sub/sub-child',
        props: { basename: UMI_ENV === "dev" ? "" : "/portal" }, // 将basename传递给子应用
      },
    ],
})

子应用的入口文件修改为:

// app.tsx
import { createHistory } from '@umijs/max'; // umi3提供的方法是setCreateHistoryOptions

export const qiankun = {
  // 应用加载之前
  async bootstrap(props: any) {
    const basename = props?.basename;
    if (basename) createHistory({ basename });
  },
};

另外,还需要path保持一致,在子应用中也会自动加一个base,比如,子应用的base是/sub/sub-child/,那么,就意味着子应用的根目录是/sub/sub-child/,在主应用中使用时,引入的子应用路由地址就应该是/sub/sub-child/
子应用的配置修改为:

// config/config.ts
const { NODE_ENV } = process.env;

export default defineConfig({
  base: NODE_ENV === 'development' ? '/' : '/sub/sub-child/',
}

修改主应用路由:

// config/routes.ts
export default [
  {
    path: '/sub/sub-child',
    name: '一级子应用',
    microApp: 'triage',
    microAppProps: {
      autoCaptureError: true,
      autoSetLoading: true,
    },
  },
  {
    path: '/sub/sub-child/exp',
    name: '二级子应用',
    microApp: 'triage',
    microAppProps: {
      autoCaptureError: true,
      autoSetLoading: true,
    },
  },
]

相关文章

  • Express 总结

    Express 基本概念 子应用 挂载点 "/admin" 就是 admin 的挂载点 Express API 总...

  • 使用Aira2下载文件后自动上传到GoogleDrive网盘

    阐明:网盘挂载方式参考:在Debian/Ubuntu上应用rclone挂载Google Drive网盘,Aira2...

  • CentOS8配置本地yum

    备份yum源 挂载iso镜像(注意:该方法挂载重启会失效) 使用df -h命令查询挂载是否成功 新建yum源 测试...

  • 四、Yum使用和Acl权限设置

    mount /dev/cdrom /media 挂载光盘 df -Th查看光盘是否挂载成功image.png y...

  • 在Debian-Ubuntu上使用rclone挂载OneDriv

    阐明:之前发了个Google Drive网盘挂载教程,参考:在Debian/Ubuntu上应用rclone挂载Go...

  • 阿里云挂载新硬盘

    找到 待挂载 云盘,在 操作 列中,选择 更多 > 挂载,刷新云盘列表,如果是使用中,表示挂载服务器成功 检查阿里...

  • 阿里云挂载新硬盘

    1、找到 待挂载 云盘,在 操作 列中,选择 更多 > 挂载,刷新云盘列表,如果是使用中,表示挂载服务器成功2、检...

  • 2021-01-15

    网卡配置以文件的形式,访问网卡配置 windowsli是\ 注意是反斜杠 挂载 挂载成功 dhcp安装 dhcp安...

  • pv pvc学习笔记

    不使用pv/pvc 直接挂载存储 以Azure File存储举例,先定义访问的用户名/密码 再挂载资源 应用: 这...

  • Vue 实战 饿了么 之 (一)数据准备

    一、$mount()手动挂载 当Vue实例没有el属性时,则该实例尚没有挂载到某个dom中;假如需要延迟挂载,可以...

网友评论

      本文标题:微应用没有挂载成功

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