針對內嵌程式代碼進行疑難解答和偵錯
開發內嵌式分析解決方案時,您可能會遇到錯誤。 發生這種情況時,您必須找出錯誤發生的原因。
使用 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 使用者 有
在瀏覽器控制台中偵錯
您也可以在瀏覽器的控制台中對應用程式進行偵錯。 例如,在您擁有內嵌實例之後,請輸入下列代碼段:
// 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 => {
...
});