排查并调试嵌入代码
开发嵌入式分析解决方案时,可能会遇到错误。 发生这种情况时,需要找出错误发生的原因。
使用 error
事件调试嵌入式分析解决方案并更好地了解导致错误的原因。
如果不知道如何处理错误,始终可以在 Stack Overflow 上搜索或提出问题。
查找发生的错误
error
发生错误时触发事件。 可以使用以下命令侦听事件 element.on(...)
,然后设置事件处理程序。
report.on('error', (errorObject) => {
...
});
有关处理事件的详细信息,请参阅 如何处理事件。
该 error
事件返回对象 IError
:
interface IError {
message: string;
detailedMessage?: string;
errorCode?: string;
level?: TraceType;
technicalDetails?: ITechnicalDetails;
}
例如,当令牌过期时,将收到以下错误对象:
{
"message": "TokenExpired",
"detailedMessage": "Access token has expired, resubmit with a new access token",
"errorCode": "403"
}
有关刷新访问令牌的信息,请参阅 “刷新访问令牌”。
疑难解答
获取 IError
对象后,请将 在嵌入式应用程序与 IError 对象表的故障排除 中查找它,并找到故障 () 的可能原因。
注意
Power BI 用户有一个常见的错误表, (也称为为组织) 嵌入,对于非 Power BI 用户, (也称为为客户嵌入) 。
在浏览器的控制台中进行调试
还可以在浏览器的控制台中调试应用。 例如,在嵌入实例后输入以下代码片段:
// Add a listener to 'error' events
report.on('error', (errorObject) => {
const err = errorObject.detail;
// Print the error to console
console.log(`Error occurred: ${err.message}. Detailed message: ${err.detailedMessage}`);
console.log(err);
});
捕获 API 错误
大多数客户端 API 都是返回 Promise 的异步函数。
如果使用模式 async
/await
,则应使用 try
/catch
它来捕获潜在的错误。 例如:
try {
...
// Set a new access token
await report.setAccessToken(newAccessToken.token);
} catch (e) {
...
}
如果不使用该 async
/await
模式,可以使用 catch
函数来捕获潜在的错误。 例如:
// Set a new access token
report.setAccessToken(newAccessToken.token).catch(e => {
...
});