Поделиться через


Устранение неполадок и отладка кода внедрения

При разработке внедренного решения аналитики могут возникнуть ошибки. В этом случае необходимо выяснить, почему произошла ошибка.

Используйте событие 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 => {
    ...
});