vite-plugin-legacy-qiankun
vite-plugin-legacy-qiankun copied to clipboard
两个应用来回切换报错
index-legacy-eadb6705.js:29 Error: http://192.168.0.116:8082/CoreUI_App/assets/index-legacy-4470f73e.js (SystemJS https://github.com/systemjs/systemjs/blob/main/docs/errors.md#2) at eval (polyfills-legacy-758f4cb6.js:1:115007)
两个子应用都是vue3 + vite 请问大佬这个要怎么解决?
能提供个 git 仓库不,我看看
能提供个 git 仓库不,我看看
一个页面里同时加载多个同名子应用就容易出现这个错误
一个页面里同时加载多个同名子应用就容易出现这个错误
如果将systemjs包改成cdn引入就没这个报错了。
一个页面里同时加载多个同名子应用就容易出现这个错误
这个同名指的是注册子应用的名称吗,还是vue实例
解决了吗,我也遇见了同样的问题
是 qiankun 的问题, qiankun 把 System 做为 global 挂载到了顶层的 window 上了,在 inactive 时会被重置,在 active 里只是激活 sandbox 但是子应用的 polyfills.js 不会被再次执行导致 System 对象不正确 https://github.com/umijs/qiankun/blob/master/src/sandbox/proxySandbox.ts#L70 https://github.com/umijs/qiankun/blob/master/src/sandbox/proxySandbox.ts#L198
是 qiankun 的问题, qiankun 把 System 做为 global 挂载到了顶层的 window 上了,在 inactive 时会被重置,在 active 里只是激活 sandbox 但是子应用的 polyfills.js 不会被再次执行导致 System 对象不正确 https://github.com/umijs/qiankun/blob/master/src/sandbox/proxySandbox.ts#L70 https://github.com/umijs/qiankun/blob/master/src/sandbox/proxySandbox.ts#L198
let subName: string | undefined,
system = window.System;
const systems = new Map<string, any>();
Object.defineProperty(window, 'System', {
get() {
return subName ? systems.get(subName) : system;
},
set(val) {
subName ? systems.set(subName, val) : (system = val);
},
});
在主应用里把 System 劫持,暂时解决了
一个页面里同时加载多个同名子应用就容易出现这个错误
如果将systemjs包改成cdn引入就没这个报错了。
cdn 会造成子应用逃离 sandbox 环境,js, css 全部加载到主应用上去了