Results 9 comments of Hubert X

主应用启用沙箱后对象都挂载在了FakeWindow上,设计器中使用iframe 加载没有被qiankun劫持所以拿window.parent拿不到 Proxy 对象,可以通过environment 或 extraEnvironment 去设置环境 ![image](https://github.com/alibaba/lowcode-engine/assets/6029663/298b2572-f494-4759-b22c-23552f49efaf) ![5d2d1577-8f5d-42ef-b404-5cb83ba3f25e](https://github.com/alibaba/lowcode-engine/assets/6029663/227b983f-a7d8-4b13-bf8b-6ea8441dcf32)

less compile use require.resolve to get package from node_modules but extension use inside less package that only can get from extension's node_modules directory,the way to @import from node_modules is using...

> > 发现另外一个插件,在开发环境验证可以 `vite-plugin-legacy-qiankun` > > 这个也不行,它生产的html是用systemjs去加载js, 用这个插件两个入口作为子组件同时加载,前一个加载的js会被后一个js影响,前一个入口还没执行System.register就被打断了,报错(SystemJS https://github.com/systemjs/systemjs/blob/main/docs/errors.md#2) at eval (polyfills-legacy-93a2bb93.js:1:100613),只能加载后一个入口 这个还有个问题 systemjs 是通过 polyfills 加载的,qiankun 把 System 对象当成 white list 放到了 global 上了,inactive 里重置了 System, 离开子应用再进来因为 sandbox 不会再执行...

是 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,...

https://github.com/vitejs/vite/blob/main/packages/vite/src/client/client.ts#L425 https://github.com/umijs/qiankun/blob/master/src/sandbox/patchers/dynamicAppend/common.ts#L287 vite client 中 如果浏览器在一帧中有连续添加 js, 后面的 js 就是用的 insertAdjacentElement 添加进去的,qiankun 无法劫持到导致部分样式会随机丢失掉 serve 时转成 appendChild 添加就可以 ` code = code.replace("(!style)", "(style?.remove() || true)").replace("lastInsertedStyle.insertAdjacentElement(\"afterend\", style)", "document.head.appendChild(style)");`

> > 一个页面里同时加载多个同名子应用就容易出现这个错误 > > 如果将systemjs包改成cdn引入就没这个报错了。 cdn 会造成子应用逃离 sandbox 环境,js, css 全部加载到主应用上去了