具有共享运行时的 Excel 加载项 - displayDialogAsync 上出现未处理的异常

问题描述 投票:0回答:1

我正在开发一个使用弹出窗口(displayDialogAsync)的办公室任务窗格加载项。

我希望 displayDialogAsync 无论使用单独的运行时还是共享运行时都能以相同的方式工作,但在共享运行时下似乎会发生竞争条件,通常会导致未处理的异常

使用单独的运行时(在清单中)时,插件可以毫无问题地显示对话框弹出窗口。

一旦我切换到共享运行时(),弹出对话框中通常会显示以下错误:

未捕获的运行时错误: 错误 无法读取未定义的属性(读取“寄存器”) 类型错误:无法读取未定义的属性(读取“寄存器”) 在 t.register (https://appsforoffice.microsoft.com/lib/1/hosted/excel-win32-16.01.js:25:336996) 在https://appsforoffice.microsoft.com/lib/1/hosted/excel-win32-16.01.js:25:1356347

如果我通过单击 (X) 关闭错误消息,该对话框仍然可以正常工作,但显然这不是可接受的用户体验。

错误并不总是显示,有时会显示几分之一秒,因此几乎不可见。感觉就像是一种竞赛条件。

有办法防止这种情况发生吗?难道是 appsforoffice 库的问题吗?

谢谢!

office-js race-condition excel-addins unhandled-exception apps-for-office
1个回答
0
投票

我终于能够重现该错误并在此过程中找到解决方法。
重现的关键是启用 webpack 开发服务器覆盖选项,这是显示错误的唯一方法,因为它永远不会出现在调试控制台中,因为它在弹出窗口中运行,该窗口具有不同的运行时。
因此,这让我找到了解决方法:只需在 webpack.config.json 中显式禁用覆盖,并且错误永远不会出现。顺便说一句,我不知道为什么/如何突然默认启用覆盖(配置中没有启用它),但这是一个不同的故事。 因此,在启用覆盖和具有长生命周期的共享运行时的情况下,人们必须重复打开和关闭对话框。有时不会出现错误,有时错误会显示几分之一秒,有时会像这样持续存在:
当然,这也让我意识到这在生产中不会成为问题,因为错误永远不会显示,但我之前不知道。

© www.soinside.com 2019 - 2024. All rights reserved.