포함 코드 문제 해결 및 디버그

임베디드 분석 솔루션을 개발할 때 오류가 발생할 수 있습니다. 이 경우 오류가 발생한 이유를 파악해야 합니다.

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 사용자(고객을 위한 포함이라고도 함)에 대한일반적인 오류 테이블이 있습니다.

브라우저의 콘솔에서 디버그

브라우저의 콘솔에서 앱을 디버그하기만 하면 됩니다. 예를 들어 embed 인스턴스가 있으면 다음 코드 조각을 입력합니다.

// 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 오류 catch

대부분의 클라이언트 API는 Promise를 반환하는 비동기 함수입니다.

패턴을 사용하는 async/await 경우 잠재적인 오류를 catch하는 데 사용해야 try/catch 합니다. 예를 들면 다음과 같습니다.

try {
    ...

    // Set a new access token
    await report.setAccessToken(newAccessToken.token);
} catch (e) {
    ...
}

패턴을 사용하지 않는 경우 함수를 async/awaitcatch 사용하여 잠재적인 오류를 catch할 수 있습니다. 예를 들면 다음과 같습니다.

// Set a new access token
report.setAccessToken(newAccessToken.token).catch(e => {
    ...
});

다음 단계