对嵌入代码进行故障排除和调试

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

使用 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 对象 表的嵌入式应用程序进行故障排除 进行比较,并找到失败的可能原因。

注意

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