Как протестировать реализацию Crashlytics (веб)

Выберите платформу: iOS+ Android Web Flutter Unity


Если вы выполнили инструкции из руководства по началу работы, но на панели управления Crashlytics по-прежнему не отображаются сбои, воспользуйтесь этим руководством.

Как принудительно вызвать сбой, чтобы проверить реализацию

  1. Добавьте в приложение код, который можно использовать для принудительного тестового сбоя.

    Добавьте в приложение React, Next.js или Angular тестовую кнопку или триггер маршрута, который при нажатии вызывает ошибку выполнения:

    // Trigger an unhandled exception on button click or route load
    function handleTestCrash() {
      throw new Error("Crashlytics Web SDK Test Unhandled Error!");
    }
    

    Если вы настроили автоматическую регистрацию ошибок с помощью <FirebaseCrashlytics> (React или Next.js), provideCrashlytics (Angular) или <CrashlyticsRoutes> (React Router), то при возникновении ошибки исключение будет автоматически зарегистрировано и запланировано к загрузке.

  2. Скомпилируйте и запустите приложение, а затем вызовите тестовую ошибку, чтобы приложение отправило в Firebase первый отчет о сбое.

  3. В консоли Firebase перейдите в раздел DevOps & Engagement (DevOps и взаимодействие) > Crashlytics dashboard (Панель управления) и проверьте, появился ли отчет о тестовом сбое.

    1. Выберите веб-приложение в раскрывающемся списке вверху страницы.

    2. Обновите страницу. Тестовое исключение должно появиться в таблице Проблемы в течение нескольких минут.

Если вы обновили консоль и по-прежнему не видите тестовый сбой через 5–10 минут, ознакомьтесь со следующим разделом об устранении неполадок в настройке.

Устранение неполадок с настройками

Если вы запустили тестовый сбой, но в течение 5–10 минут не увидели отчеты на панели управления Crashlytics, попробуйте повторно запустить процесс настройки или проверить следующие конфигурации проекта в консоли:

  • Повторно запустите процесс настройки Crashlytics. Вы можете повторно запустить команду настройки CLI Firebase (firebase crashlytics:setup) или завершить настройку в консоли Firebase, как описано в шаге 1 краткого руководства по началу работы. При повторной настройке автоматически включаются все отсутствующие API и восстанавливаются сегмент firebase-telemetry Cloud Logging и приемник маршрутизации.

  • Проверьте платежные данные и разрешения IAM. Убедитесь, что для проекта Firebase выбран тарифный план Blaze с оплатой по мере использования и что у вашего аккаунта есть разрешения владельца проекта.

  • Проверьте ограничения ключа API firebasetelemetry.googleapis.com. В консоли Google Cloud на странице Credentials (Учетные данные) выберите ключ API, настроенный в объекте firebaseConfig (например, Browser key (auto created by Firebase)). Если для ключа включены ограничения API, убедитесь, что Firebase Telemetry API (firebasetelemetry.googleapis.com) входит в список разрешенных API. Если эта цель отсутствует в ограниченном ключе API, запросы на загрузку по сети завершаются ошибками HTTP 403 (Запрещено) в консоли браузера.

  • Проверьте включенные API Google Cloud. В консоли Google Cloud на странице Enabled APIs & services (Включенные API и сервисы) убедитесь, что для вашего проекта включены Firebase Telemetry API (firebasetelemetry.googleapis.com), Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com), Cloud Logging API (logging.googleapis.com) и Cloud Storage (storage.googleapis.com).

  • Проверьте, включена ли функция Log Analytics для сегмента журналов. В консоли Google Cloud на странице Хранилище журналов убедитесь, что сегмент firebase-telemetry (местоположение global) существует и для него включена функция Log Analytics. На странице Маршрутизатор журналов проверьте, существует ли приемник firebase-telemetry-routing.

Как вручную зарегистрировать и сбросить тестовое исключение

Если вы хотите сразу проверить сквозную передачу, не дожидаясь пакетной обработки в памяти или выгрузки страницы, используйте recordError вместе с flush:

import { recordError, flush, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase'; // Shared initialization script

const crashlytics = getCrashlytics(app);

async function triggerImmediateTestCrash() {
  const error = new Error("Crashlytics Web SDK Test Handled Error!");
  // Capture the error with immediate priority and custom diagnostic metadata
  recordError(crashlytics, error, {
    priority: 'IMMEDIATE',
    testEvent: true,
    environment: 'staging_verification'
  });
  // Force an immediate upload before the browser terminates or reloads
  await flush(crashlytics);
  console.log("Test error flushed to Crashlytics successfully.");
}

Дальнейшие действия

  • Получайте понятные отчеты о сбоях. Настройте автоматическую загрузку файлов исходных карт (.js.map), чтобы в трассировках стека рабочей среды показывались исходные названия файлов и номера строк.

  • Настройка отчетов о сбоях Узнайте, как создавать отчеты об обработанных исключениях, добавлять специальные ключи, принудительно очищать записи телеметрии и настраивать выборку.