micro-app icon indicating copy to clipboard operation
micro-app copied to clipboard

子应用无法加载问题

Open BenjaminCCG opened this issue 2 years ago • 4 comments

基座和子应用都是vite4 + vue3

当子应用代码为如下,可以在官方的基座项目中运行,无法在我自己建立的基座项目中运行

import { createApp, App as AppInstance } from 'vue';
import App from './App.vue';
import { createPinia } from 'pinia';
import router from './router';
import 'virtual:windi.css';
import { Router } from 'vue-router';

let app: AppInstance | null;
function mount() {
  app = createApp(App);
  console.log('微应用child-vite渲染了');

  app.use(createPinia()).use(router).mount('#vueApp');
  handleMicroData(router);
}

// 将卸载操作放入 unmount 函数
function unmount() {
  app?.unmount();
  // 卸载所有数据监听函数
  window.eventCenterForVueApp?.clearDataListener();
  app = null;
  console.log('微应用child-vite卸载了');
}
console.log('🚀 ~ file: main.ts:65 ~ window.__MICRO_APP_BASE_APPLICATION__:', window.__MICRO_APP_BASE_APPLICATION__);

// 微前端环境下,注册mount和unmount方法
if (window.__MICRO_APP_BASE_APPLICATION__) {
  // @ts-ignore
  window['micro-app-vue-app'] = { mount, unmount };
} else {
  // 非微前端环境直接渲染
  mount();
}

只有将上面的mount和unmount改成如下才能显示 `const app = createApp(App); console.log('微应用child-vite渲染了');

app.use(createPinia()).use(router).mount('#vueApp');`

也就是不再为window['micro-app-vue-app']添加mount, unmount函数,但是切换应用回来,之前显示过的应用又无法显示 请问是哪里出了问题

BenjaminCCG avatar Nov 28 '23 06:11 BenjaminCCG

复现仓库 https://github.com/BenjaminCCG/micro-app-test-demo

BenjaminCCG avatar Nov 28 '23 06:11 BenjaminCCG

上述代码的接入方式是老版本的,1.0版本建议参考 https://micro-zoe.github.io/micro-app/docs.html#/zh-cn/transfer ,https://micro-zoe.github.io/micro-app/docs.html#/zh-cn/framework/vite

bailicangdu avatar Nov 28 '23 08:11 bailicangdu

官方案例也会在近期更新

bailicangdu avatar Nov 28 '23 08:11 bailicangdu

我也使用最新版本 但是遇到子用的route无法渲染 希望能尽快出个新的demo

jimmyann2023 avatar Nov 29 '23 05:11 jimmyann2023