micro-app icon indicating copy to clipboard operation
micro-app copied to clipboard

esmodule,关闭沙盒的情况下,vue3项目加载报错

Open YornQiu opened this issue 3 years ago • 6 comments

问题描述

问题的具体描述

若项目中有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地址,否则将无法导入正确的内容。

复现步骤

  1. 启动一个micro-app主应用(该代码库下的 /dev/main-vite)
  2. 加载打包后的子应用

上传截图

请上传代码截图、控制台、终端等截图以帮助我们了解您的问题。 image image

复现仓库

请提供一个精简的代码仓库,然后上传到自己的 github,以帮助我们复现您的问题。

环境信息

  • micro-app版本:1.0.0
  • 主应用前端框架&版本:vite2,vue3
  • 子应用前端框架&版本:vue3
  • 构建工具&版本:vite2

YornQiu avatar Jul 29 '22 08:07 YornQiu

感谢反馈,我们已经在安排解决了

bailicangdu avatar Jul 29 '22 08:07 bailicangdu

感谢反馈,我们已经在安排解决了

@bailicangdu 请教一下,即然在esm下已经无法使用沙盒了,为什么不直接append script标签,而要将原来的src改为blob?

YornQiu avatar Jul 29 '22 08:07 YornQiu

为esm沙箱设计的,但是esm沙箱还没实现,看起来就又些多余,后续会用到

bailicangdu avatar Jul 29 '22 10:07 bailicangdu

也遇到同样的问题了。

ice-musru avatar Aug 10 '22 10:08 ice-musru

我遇到的报错是micro-app Uncaught (in promise) TypeError: Cannot read properties of null (reading 'parentNode')。是从子应用切换到主应用的路由,再切换回来,子应用就加载不出来,页面空白,不过有时报错有时不报错,只有打包后会这样,本地不会。

ohion avatar Aug 23 '22 08:08 ohion

我本地就重现了这个问题Uncaught (in promise) TypeError: Cannot read properties of null (reading 'parentNode'),子应用切换到主应用的路由,再切换回来,就页面空白。

fluoos avatar Aug 26 '22 09:08 fluoos

vite可使用manualChunks()对公共模块进行分包处理

X-W-W avatar Mar 30 '23 09:03 X-W-W