Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

生产环境,主子应用共享window上的依赖失败 #1157

Closed
ByronYan01 opened this issue Apr 8, 2024 · 7 comments
Closed

生产环境,主子应用共享window上的依赖失败 #1157

ByronYan01 opened this issue Apr 8, 2024 · 7 comments
Labels
common common question solved problem solved

Comments

@ByronYan01
Copy link

问题描述

主子应用都是 vite+vue3+element-plus,主应用通过加载cdn上的依赖正常渲染,再加载子应用时,将rawWindow上的依赖都赋值给子应用中的window上,子应用加载失败

复现步骤

1.主应用渲染成功,触发子应用加载
2.子应用加载先执行script赋值再执行加载其他文件

上传截图

请上传代码截图、控制台、终端等截图以帮助我们了解您的问题。
主应用打印的子应用的html
image
window相关属性存在
image
子应用报错信息
image

复现仓库

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

环境信息

  • micro-app版本:1.0.0-rc.3
  • 主应用前端框架&版本:vue3+element-plus
  • 子应用前端框架&版本:vue3+element-plus
  • 构建工具&版本:vite5
@bailicangdu bailicangdu added common common question Need Reproduction 需要复现步骤 labels Apr 8, 2024
Copy link

github-actions bot commented Apr 8, 2024

Hello @ByronYan01. In order to facilitate location and troubleshooting, we need you to provide a realistic GitHub repository.
您好 @ByronYan01, 为了方便定位和排查问题,我们需要您提供一个重现实例,请提供一个尽可能精简的 GitHub 仓库地址。

@ByronYan01
Copy link
Author

@ByronYan01
Copy link
Author

打包产物使用yarn preview可访问

@youngBrain1893
Copy link

看 child 构建产物相关资源是 module 类型,with沙箱是否支持这种类型呢?
印象中 iframe 沙箱是为了支持 vite 这种 esmodule 的,但需要注意 iframe 运行 module 代码实际直接用的 iframe 的 contentWindow

@ByronYan01
Copy link
Author

看 child 构建产物相关资源是 module 类型,with沙箱是否支持这种类型呢? 印象中 iframe 沙箱是为了支持 vite 这种 esmodule 的,但需要注意 iframe 运行 module 代码实际直接用的 iframe 的 contentWindow

谢谢回复,是改成这样嘛
window.frameElement.contentWindow.Vue = window.rawWindow.Vue;
我试了一下还是一样的报错

@bailicangdu bailicangdu removed the Need Reproduction 需要复现步骤 label Apr 11, 2024
@bailicangdu
Copy link
Member

看了一下demo,问题出在CDN打包会将所有js降级为非esm,所以主应用的js是非esm,而子应用是esm,导致不兼容
image
image

@bailicangdu
Copy link
Member

bailicangdu commented Apr 11, 2024

这是vite打包模式的问题,和微前端关系不大。这里提供一种方式,仅供参考:1、子应用vite.config.js引入vite-plugin-cdn-import,配置方式和主应用一样 2、主应用修改如下:
image

经过上述修改,可以正常渲染
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
common common question solved problem solved
Projects
None yet
Development

No branches or pull requests

3 participants