lowcode-engine icon indicating copy to clipboard operation
lowcode-engine copied to clipboard

设计器组件集成到微服务后无法正常工作

Open zaraChun opened this issue 2 years ago • 7 comments

问题原因://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) 如何解决此问题

zaraChun avatar Nov 24 '22 07:11 zaraChun

给个复现demo吧,这样也没办法诊断问题

JackLian avatar Nov 24 '22 08:11 JackLian

你好 @zaraChun,由于缺乏必要的信息(如 bug 重现步骤、引擎版本信息 等),无法定位问题,请按照 issue bug 模板 补全信息,也可以通过阅读引擎的 issue 说明 了解什么类型的 issue 可以获得更好、更快的支持。

github-actions[bot] avatar Nov 24 '22 08:11 github-actions[bot]

给一点我的思路: engine-core.js 正常是浏览器里 script 直接加载的,所以通过 document.currentScript.src 能拿到 engine-core.js 的 src,现在通过微前端(qiankun? icestark?)动态加载 engine-core.js 后,document.currentScript.src 丢失了,所以去看下相应的微前端框架,如何让动态加载 script 能够拿到自身的 src

LeoYuan avatar Nov 24 '22 08:11 LeoYuan

再或者偷点懒,引擎 init 时直接指定 simulatorUrl,也就不用上述代码推断了~

LeoYuan avatar Nov 24 '22 08:11 LeoYuan

出现了同样的问题..

darknessjs avatar Feb 20 '23 07:02 darknessjs

是因为在一些微前端框架是用的fetch获取的js资源 加载engine-core.js时用了fetch之后,document.currentScript就获取不到当前的值了

darknessjs avatar Feb 20 '23 07:02 darknessjs

可以去看下这个库的解决方案哦 https://github.com/WHSnhcZDYRZC/umi4-lowcode-engine-solutions

WHSnhcZDYRZC avatar Jul 13 '24 12:07 WHSnhcZDYRZC