共用方式為


針對內嵌程式代碼進行疑難解答和偵錯

開發內嵌式分析解決方案時,您可能會遇到錯誤。 發生這種情況時,您必須找出錯誤發生的原因。

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