找回密码
 立即注册

QQ登录

只需一步,快速开始

YitongWei

注册会员

5

主题

15

帖子

52

积分

注册会员

积分
52
YitongWei
注册会员   /  发表于:2022-7-29 10:43  /   查看:4179  /  回复:11
100金币
本帖最后由 Joestar.Xu 于 2023-10-25 14:10 编辑



产品:SpreadJS
版本:14.1.3


最近项目升级,上了微前端框架,用qiankun加载所有子前端服务,原来SpreadJs可以正常导出Excel,现在无任何响应,也没有报错

image.png239402770.png

最佳答案

查看完整内容

我们之前遇到过qiankun的问题是这样的,问题出在解压文件时候的内部回调, 我们解压用了jszip,jszip内部回调回判断事件的source是不是当前window。但是qiankun做了沙箱,把window封装成proxy,但是事件的source没有封装还是当前页面的window,两个window不一致,导致回调事件无法触发。综上所述,应该是qiankun这个组件自身的问题。我们能给出的建议是导出用GcExcel来导出,SpreadJS这些只做json的序列化和反序列化。 至于您这 ...

11 个回复

倒序浏览
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-29 10:43:12
来自 4#
本帖最后由 Clark.Pan 于 2022-7-29 18:25 编辑

我们之前遇到过qiankun的问题是这样的,问题出在解压文件时候的内部回调, 我们解压用了jszip,jszip内部回调回判断事件的source是不是当前window。但是qiankun做了沙箱,把window封装成proxy,但是事件的source没有封装还是当前页面的window,两个window不一致,导致回调事件无法触发。综上所述,应该是qiankun这个组件自身的问题。我们能给出的建议是导出用GcExcel来导出,SpreadJS这些只做json的序列化和反序列化。

至于您这边如果上述情况还未解决,有可能不是一个问题原因,所以请提供完整的demo能够运行的demo。需要详细的调查。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-29 11:21:22
2#
您好,您试一下在启动qiankun的start方法中将其改为start({sandbox:false});
回复 使用道具 举报
YitongWei
注册会员   /  发表于:2022-7-29 11:43:24
3#
Clark.Pan 发表于 2022-7-29 11:21
您好,您试一下在启动qiankun的start方法中将其改为start({sandbox:false});

试过了,不行
回复 使用道具 举报
YitongWei
注册会员   /  发表于:2022-7-29 17:46:05
5#
Clark.Pan 发表于 2022-7-29 13:41
我们之前遇到过qiankun的问题是这样的,问题出在解压文件时候的内部回调, 我们解压用了jszip,jszip内部回 ...

找到原因了,Qiankun对windows做了Proxy,污染了window对象,我们通过修改ExcelIO的源码,暂时解决了.
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-29 18:26:21
6#
好的,解决了就好,建议给他们提个bug,让他们尽快修复此问题
回复 使用道具 举报
miSpreadjs
注册会员   /  发表于:2022-12-22 17:34:13
7#
YitongWei 发表于 2022-7-29 17:46
找到原因了,Qiankun对windows做了Proxy,污染了window对象,我们通过修改ExcelIO的源码,暂时解决了.

请问下你们是怎么处理的,可以参考一下么?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-22 18:08:30
8#
你可以试一下在启动qiankun的start方法中将其改为start({sandbox:false});
回复 使用道具 举报
dong007
注册会员   /  发表于:2023-10-23 17:00:29
9#
【2023/10/23】用的 jszip 库:里边用了  setimmediate.js。  注入的 global 是代理对象。 event.source === global 比较不成功。
解决办法:可以降低  jszip 的版本:3.9.1 可以。 exceljs 库引入的 jszip 也要降低下。

评分

参与人数 1金币 +300 收起 理由
Joestar.Xu + 300 赞一个!

查看全部评分

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-23 17:28:04
10#
dong007 发表于 2023-10-23 17:00
【2023/10/23】用的 jszip 库:里边用了  setimmediate.js。  注入的 global 是代理对象。 event.source == ...

感谢分享~
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部