آزمایش کردن پیاده‌سازی 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 و تعامل > Crashlytics بروید تا گزارش خرابی آزمایشی را بررسی کنید:

    1. برنامه وب خود را از انتخابگر کرکره‌ای در بالای صفحه انتخاب کنید.

    2. صفحه را بازخوانی کنید. استثنای آزمایشی شما باید ظرف چند دقیقه در جدول مشکلات نشان داده شود.

اگر کنسول را بازآوری کرده‌اید و هنوز خرابی آزمایشی را پس‌از پنج تا ده دقیقه نمی‌بینید، بخش بعدی را درباره عیب‌یابی راه‌اندازی‌تان ببینید.

عیب‌یابی راه‌اندازی

اگر خرابی آزمایشی را راه‌اندازی کرده‌اید و هنوز گزارش‌ها را در داشبورد Crashlytics پس‌از پنج تا ده دقیقه نمی‌بینید، دوباره جریان راه‌اندازی را اجرا کنید یا پیکربندی‌های پروژه زیر را در کنسول تأیید کنید:

  • اجرای مجدد جریان راه‌اندازی Crashlytics: می‌توانید با خیال راحت Firebaseفرمان راه‌اندازی CLI (firebase crashlytics:setup) را دوباره اجرا کنید یا راه‌اندازی را در کنسول Firebase تکمیل کنید، همان‌طور که در مرحله ۱ راهنمای شروع به کار توضیح داده شده است. اجرای مجدد راه‌اندازی به‌طور خودکار هر API مفقودشده را فعال می‌کند و مخزن firebase-telemetry Cloud Logging و سینک مسیریابی را تعمیر می‌کند.

  • بررسی صورت‌حساب و اجازه‌های IAM: مطمئن شوید که پروژه Firebase شما در طرح قیمت‌گذاری Blaze پرداخت به اندازه استفاده باشد و حسابتان هنگام اجرای مرحله راه‌اندازی، اجازه‌های مالک را در پروژه داشته باشد.

  • محدودیت‌های کلید میانای برنامه‌سازی کاربردی firebasetelemetry.googleapis.com را به‌تأیید برسانید: در Google Cloud کنسول صفحه اطلاعات کاربری، کلید میانای برنامه‌سازی کاربردی پیکربندی‌شده در شیء firebaseConfig (برای مثال، Browser key (auto created by Firebase)) را انتخاب کنید. اگر محدودیت‌های میانای برنامه‌سازی کاربردی برای کلید فعال است، به‌تأیید برسانید که Firebase Telemetry API (firebasetelemetry.googleapis.com) در فهرست میاناهای برنامه‌سازی کاربردی مجاز گنجانده شده باشد. اگر این هدف در کلید میانای برنامه‌سازی کاربردی محدودشده وجود نداشته باشد، درخواست‌های بارگذاری شبکه با خطاهای HTTP 403 (ممنوع) در کنسول مرورگر شما ناموفق خواهد بود.

  • بررسی میاناهای برنامه‌سازی کاربردی Google Cloud فعال‌شده: در کنسول Google Cloud، در صفحه میاناهای برنامه‌سازی کاربردی و سرویس‌های فعال‌شده، بررسی کنید که Firebase Telemetry API (firebasetelemetry.googleapis.com)، Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com)، Cloud Logging API (logging.googleapis.com)، و Cloud Storage (storage.googleapis.com) برای پروژه‌تان فعال شده باشند.

  • «تحلیل گزارش» را در دسته گزارش‌گیری درستی‌سنجی کنید: در کنسول Google Cloud در صفحه فضای ذخیره‌سازی گزارش‌ها، درستی‌سنجی کنید که دسته firebase-telemetry (مکان global) وجود داشته باشد و تحلیل گزارش در آن فعال باشد، و صفحه مسیریاب گزارش را بررسی کنید تا تأیید کنید که سینک 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) را راه‌اندازی کنید تا ردگیری‌های پشته تولید شما نام فایل‌ها و شماره خطوط اصلی را نمایش دهد.

  • سفارشی‌سازی گزارش‌های خرابی — با نحوه گزارش کردن استثناهای رسیدگی‌شده، افزودن کلیدهای سفارشی، پاک‌سازی اجباری سوابق دورسنجی، و پیکربندی نمونه‌گیری آشنا شوید.