我现在的做法是在主项目中将组件放到window中
import { cloneDeep } from 'lodash';
import SCDrawer from '/@/components/SC/SCDrawer.vue'
window.MicroFrontends = {
SCComponents: {
SCDrawer: cloneDeep(SCDrawer)
},
}
子项目在window中获取 并且注册到app
export const SCComponents = (app) => {
const SCComponents = window.MicroFrontends.SCComponents
app.component('SCDrawer', SCComponents.SCDrawer);
}
// main.ts
const app = createApp(App);
SCComponents(app)
但是使用过程中发现如果组件中有插槽slot
<template>
<div>
<slot></slot>
</div>
</template>
那么子组建使用时会报错 Cannot read properties of null (reading 'isCE')
我看网上说是vue版本不一致导致的,但是我检查了我的主项目与子项目的vue版本是一样的
请问大佬们 有没有什么解决的方法 或者有其他主子应用共享组件的方法也行