aliyun / alibabacloud-alfa

阿里云微前端解决方案
https://aliyun.github.io/alibabacloud-alfa
MIT License
850 stars 83 forks source link

1.0.0-next.13 问题反馈 #56

Closed xuchangjunjx closed 3 years ago

xuchangjunjx commented 3 years ago

环境

vue-cli3+chrome v88

依赖

主应用 安装 @alicloud/console-os-vue-host-app": "^1.0.0-next.13" 出现问题如下:

"export 'loadExposedModule' was not found in '@alicloud/console-os-kernal'

子应用 vue-cli3+chrome v88 安装依赖: "@alicloud/console-os-vue-portal": "^0.4.1", "vue-cli-plugin-console-os": "^0.4.5", 路由配置懒加载

{
      path: "/page1",
      name: "page1",
      component: () => import("./views/page1.vue")
    }

报错:

vue-router.esm.js?8c4f:2314 ChunkLoadError: Loading chunk 0 failed.
(missing: http://172.21.52.166:8081/sub-app1/0.js)
    at Function.requireEnsure [as e] (http://17

不配置懒加载没问题

import page1 from  './views/page1.vue'
component: page1
Boelroy commented 3 years ago

可以提供一个最小的复现 demo 么

xuchangjunjx commented 3 years ago

主应用: https://github.com/xuchangjunjx/main-app 子应用:https://github.com/xuchangjunjx/sub-app1

git-page访问地址 https://xuchangjunjx.github.io/main-app

问题我发现了,简单来说是这样导致的: 主应用我配置了端口8888,子应用配置端口9999 分别本地启动, 主应用主引入Application,地址什么的都没问题

  <Application
      id="my-sub-app1"
      class="test-class"
      :sandBox="{
        initialPath: '/sub-app1',
        disableFakeBody: true,
        disable: false
      }"
      manifest="http://localhost:9999/sub-app1/my-sub-app1.manifest.json"
    />

子应用使用路由懒加载问题就出现了:

vue-router.esm.js?8c4f:2314 ChunkLoadError: Loading chunk 0 failed.
(missing: http://172.21.52.166:8888/sub-app1/0.js)

其实这里的路径就不对了 主应用端口是8888,应该加载的是http://172.21.52.166:9999/sub-app1/0.js

上面我利用git-page部署出来没这个问题 ,就因为host是一致的


我就猜到了可能是跨域到问题 然后本地配置了2个host ,再试 ,果然是这个问题。 难怪我直接部署在git-page上没事。

Boelroy commented 3 years ago

哈哈 那我明白了 你可以通过指定一下 子应用的 dev 的时候 output 的 publicPath 为 http://localhost:9999/ 来解决这个问题。 核心原因在于 默认 code spliting 之后加载 js 是当前域。 所以你需要让 webpack 知道 你加载 js 的路径在哪里