排查并调试嵌入代码

开发嵌入式分析解决方案时,可能会遇到错误。 发生这种情况时,需要找出错误发生的原因。

使用 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 => {
    ...
});

后续步骤