micro-app
micro-app copied to clipboard
esmodule,关闭沙盒的情况下,vue3项目加载报错
问题描述
问题的具体描述
若项目中有Home、About两个路由页面,在打包后会生成main.js(入口文件)、 Home.js 、 About.js 等文件,并且Home或About通过import导入了main.js中的内容,那么在加载页面时就会报图1的错误。
但该错误并不是必现,具体与从main.js中引用的内容有关。若只是引用了某些函数则不会产生错误,若引用的是存储状态,则会产生错误。
产生错误的原因如图2,micro-app通过这一行代码scriptElement.src = URL.createObjectURL(blob)将script原来的src转换成了blob地址,但在Home与About文件中引用的还是main.js原地址,所以无法从main.js中import正确的内容。
而且在加载Home时,浏览器自己又会重新加载一遍main.js。
除非将其他文件中对main.js 的引用都替换为blob地址,否则将无法导入正确的内容。
复现步骤
- 启动一个micro-app主应用(该代码库下的 /dev/main-vite)
- 加载打包后的子应用
上传截图
请上传代码截图、控制台、终端等截图以帮助我们了解您的问题。
![]()
复现仓库
请提供一个精简的代码仓库,然后上传到自己的 github,以帮助我们复现您的问题。
环境信息
- micro-app版本:1.0.0
- 主应用前端框架&版本:vite2,vue3
- 子应用前端框架&版本:vue3
- 构建工具&版本:vite2
感谢反馈,我们已经在安排解决了
感谢反馈,我们已经在安排解决了
@bailicangdu 请教一下,即然在esm下已经无法使用沙盒了,为什么不直接append script标签,而要将原来的src改为blob?
为esm沙箱设计的,但是esm沙箱还没实现,看起来就又些多余,后续会用到
也遇到同样的问题了。
我遇到的报错是micro-app Uncaught (in promise) TypeError: Cannot read properties of null (reading 'parentNode')。是从子应用切换到主应用的路由,再切换回来,子应用就加载不出来,页面空白,不过有时报错有时不报错,只有打包后会这样,本地不会。
我本地就重现了这个问题Uncaught (in promise) TypeError: Cannot read properties of null (reading 'parentNode'),子应用切换到主应用的路由,再切换回来,就页面空白。
vite可使用manualChunks()对公共模块进行分包处理
