Open zaraChun opened 1 year ago
给个复现demo吧,这样也没办法诊断问题
你好 @zaraChun,由于缺乏必要的信息(如 bug 重现步骤、引擎版本信息 等),无法定位问题,请按照 issue bug 模板 补全信息,也可以通过阅读引擎的 issue 说明 了解什么类型的 issue 可以获得更好、更快的支持。
给一点我的思路: engine-core.js 正常是浏览器里 script 直接加载的,所以通过 document.currentScript.src 能拿到 engine-core.js 的 src,现在通过微前端(qiankun? icestark?)动态加载 engine-core.js 后,document.currentScript.src 丢失了,所以去看下相应的微前端框架,如何让动态加载 script 能够拿到自身的 src?
再或者偷点懒,引擎 init 时直接指定 simulatorUrl,也就不用上述代码推断了~
出现了同样的问题..
是因为在一些微前端框架是用的fetch获取的js资源 加载engine-core.js时用了fetch之后,document.currentScript就获取不到当前的值了
问题原因://g.alicdn.com/ali-lowcode/ali-lowcode-engine/1.0.63/engine-core.js 这个js里面又段逻辑: const publicPath = (document.currentScript as HTMLScriptElement)?.src.replace(/^(.*\/)[^/]+$/, '$1');
export function getPublicPath(): string { return publicPath || ''; }
这个逻辑在应用单独启动时候,能够正确计算出simulator js的地址:https://g.alicdn.com/ali-lowcode/ali-lowcode-engine/1.0.63/react-simulator-renderer.js
当集成到主应用后,这个js的地址会错误,主要是因为publicPath = ''
想咨询下以下几个问题: 1)engine-core.js的执行时机,由于这个是在主应用加载的,是不是在子应用页面渲染的时候,计算会出错 2) 如何解决此问题