我一直在使用各种不同的原型来创建一个新的Outlook Web Add-in,并且所有这些原型都已按预期/预期工作,但是今天注册Office.EventType.ItemChanged
的代码已经停止工作,我无法解决原因。
捕获错误会返回一个通用的OSF.DDA.Error "An internal error has occurred." code: 5001
,如下所示:
error: OSF.DDA.Error {
name: "Internal Error",
message: "An internal error has occurred.",
code: 5001 } status: "failed"
我试图设置它的方式如下,并从顶级React组件的构造函数调用:
begin snippet: js hide: false console: true babel: false
语言:lang-js
Office.initialize = () => {
// Handle changing selected email - This is where the error generated
Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, this.itemChanged, this.handleFailedChange);
// Handle authentication - This is working perfectly
Office.context.mailbox.getUserIdentityTokenAsync(this.callBack);
this.setState({
...this.state,
isOfficeInitialized: true,
});
};
调用addHandlerAsync并在电子邮件之间单击然后无法触发事件时抛出错误,调用getUserIdentityTokenAsync()
方法并且正在加载项按预期进行身份验证,因此错误不会阻止执行流程。
我尝试将Office.initialize调用移出构造函数,但是除了使我更难以跟踪我依赖的isOfficeInitalized状态以确保事情已经准备好之外,这无法解决问题。
代码是ReactJS并使用TypeScript来确保编码。如上所述,我还有其他一切正常工作,包括首次打开加载项时加载选定的邮件项目 - 我从中获取主题,发件人和Cc地址 - 所以我知道Office.js文件正在运行并正在运行如预期。
任何帮助都会很棒,提前谢谢!
编辑 - 解决方案:
因此,在发布此内容并花费更多时间尝试使其工作之后,我检查了manifest.xml文件...事实证明,addHandlerAsync方法仅在API 1.5之后可用且我文件中的最小版本为1.3,设置DefaultMinVersion =“1.5”解决了这个问题:
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.5">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
因此,在发布此内容并花费更多时间尝试使其工作之后,我检查了manifest.xml文件...事实证明,addHandlerAsync方法仅在API 1.5之后可用且我文件中的最小版本为1.3,设置DefaultMinVersion =“1.5”解决了这个问题:
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.5">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>