Testowanie implementacji Crashlytics (sieć)

Wybierz platformę: iOS+ Android Web Flutter Unity


Skorzystaj z tego przewodnika, jeśli po wykonaniu instrukcji z przewodnika dla początkujących nadal nie widzisz awarii w panelu Crashlytics.

Wymuszanie awarii w celu przetestowania implementacji

  1. Dodaj do aplikacji kod, którego możesz użyć do wymuszenia awarii testowej.

    Dodaj do aplikacji React, Next.js lub Angular przycisk testowy lub aktywator trasy, który po kliknięciu wywołuje błąd środowiska wykonawczego:

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

    Jeśli skonfigurowano automatyczne przechwytywanie błędów za pomocą <FirebaseCrashlytics> (React lub Next.js), provideCrashlytics (Angular) lub <CrashlyticsRoutes> (React Router), zgłoszenie tego błędu automatycznie przechwytuje wyjątek i planuje jego przesłanie.

  2. Skompiluj i uruchom aplikację, a następnie wywołaj błąd testowy, aby aplikacja wysłała do Firebase pierwszy raport o awarii.

  3. W konsoli Firebase otwórz panel DevOps & Engagement > Crashlytics, aby sprawdzić raport o awarii testowej:

    1. Wybierz aplikację internetową w menu u góry strony.

    2. Odśwież stronę. Testowy wyjątek powinien pojawić się w tabeli Problemy w ciągu kilku minut.

Jeśli po odświeżeniu konsoli i odczekaniu 5–10 minut nadal nie widzisz testowej awarii, zapoznaj się z następną sekcją dotyczącą rozwiązywania problemów z konfiguracją.

Rozwiązywanie problemów z konfiguracją

Jeśli po wywołaniu awarii testowej i odczekaniu 5–10 minut nadal nie widzisz raportów w panelu Crashlytics, spróbuj ponownie przeprowadzić proces konfiguracji lub sprawdź te konfiguracje projektu w konsoli:

  • Ponownie uruchom proces konfiguracji Crashlytics: możesz bezpiecznie ponownie uruchomić polecenie konfiguracji interfejsu wiersza poleceń Firebase (firebase crashlytics:setup) lub dokończyć konfigurację w konsoli Firebase zgodnie z opisem w kroku 1 przewodnika dla początkujących. Ponowne uruchomienie konfiguracji automatycznie włącza brakujące interfejsy API i naprawia zasobnik firebase-telemetry Cloud Logging oraz ujście routingu.

  • Sprawdź uprawnienia do płatności i uprawnienia IAM: upewnij się, że projekt w Firebase jest objęty abonamentem Blaze z płatnością według wykorzystania, a Twoje konto ma uprawnienia właściciela do projektu podczas wykonywania kroku konfiguracji.

  • Sprawdź ograniczenia klucza interfejsu API firebasetelemetry.googleapis.com: na stronie Dane logowania w konsoli Google Cloud wybierz klucz interfejsu API skonfigurowany w obiekcie firebaseConfig (np. Browser key (auto created by Firebase)). Jeśli klucz ma włączone ograniczenia interfejsu API, sprawdź, czy interfejs Firebase Telemetry API (firebasetelemetry.googleapis.com) znajduje się na liście dozwolonych interfejsów API. Jeśli w ograniczonym kluczu interfejsu API brakuje tego celu, żądania przesyłania przez sieć nie powiodą się i w konsoli przeglądarki pojawią się błędy HTTP 403 (Forbidden).

  • Sprawdź włączone interfejsy API Google Cloud: na stronie Włączone interfejsy API i usługi w konsoli Google Cloud sprawdź, czy w Twoim projekcie są włączone interfejsy Firebase Telemetry API (firebasetelemetry.googleapis.com), Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com), Cloud Logging API (logging.googleapis.com) i Cloud Storage (storage.googleapis.com).

  • Sprawdź, czy analiza logów jest włączona w zasobniku logowania: na stronie Miejsce zajmowane przez logi w konsoli Google Cloud sprawdź, czy zasobnik firebase-telemetry (lokalizacja global) istnieje i ma włączoną analizę logów. Sprawdź też na stronie Router logów, czy istnieje ujście firebase-telemetry-routing.

Ręczne przechwytywanie i wywoływanie wyjątku testowego

Jeśli chcesz natychmiast zweryfikować transmisję end-to-end bez czekania na grupowanie w pamięci lub wyładowanie strony, użyj recordError wraz z 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.");
}

Dalsze kroki

  • Otrzymuj czytelne raporty o awariach – skonfiguruj automatyczne przesyłanie map źródłowych (.js.map), aby zrzuty stosu w środowisku produkcyjnym zawierały oryginalne nazwy plików i numery wierszy.

  • Dostosowywanie raportów o awariach – dowiedz się, jak zgłaszać obsługiwane wyjątki, dodawać klucze niestandardowe, wymuszać czyszczenie rekordów telemetrycznych i konfigurować próbkowanie.