埋め込みコードのトラブルシューティングとデバッグ

埋め込み分析ソリューションを開発するときに、エラーが発生する可能性があります。 このような場合は、エラーが発生した理由を把握する必要があります。

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