اختبار عملية تنفيذ Crashlytics (على الويب)

اختيار المنصة: +iOS Android الويب 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 > لوحة بيانات Crashlytics للاطّلاع على تقرير الأعطال التجريبي:

    1. اختَر تطبيق الويب من القائمة المنسدلة في أعلى الصفحة.

    2. يُرجى إعادة تحميل الصفحة. من المفترض أن يظهر استثناء الاختبار في جدول المشاكل في غضون بضع دقائق.

إذا أعدت تحميل وحدة التحكّم وما زلت لا ترى التعطّل الاختباري بعد خمس إلى عشر دقائق، راجِع القسم التالي حول تحديد المشاكل وحلّها في الإعداد.

تحديد المشاكل في الإعداد وحلّها

إذا تسبّبت في حدوث عطل تجريبي وما زلت لا ترى التقارير في لوحة بيانات Crashlytics بعد خمس إلى عشر دقائق، جرِّب إعادة تشغيل عملية الإعداد أو التحقّق من إعدادات المشروع التالية في وحدة التحكّم:

  • إعادة تشغيل عملية إعداد Crashlytics: يمكنك إعادة تشغيل أمر إعداد واجهة سطر الأوامر (CLI) في Firebase (firebase crashlytics:setup) بأمان أو إكمال عملية الإعداد في وحدة تحكّم Firebase كما هو موضّح في الخطوة 1 من دليل البدء. تؤدي إعادة تشغيل عملية الإعداد إلى تفعيل أي واجهات برمجة تطبيقات غير متوفّرة تلقائيًا وإصلاح حزمة firebase-telemetry Cloud Logging ومستودع التوجيه.

  • التحقّق من أذونات الفوترة وإدارة الهوية وإمكانية الوصول: تأكَّد من أنّ مشروع 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) لكي تعرض تتبعات تسلسل استدعاء الدوال البرمجية في الإصدار العلني أسماء الملفات وأرقام الأسطر الأصلية.

  • تخصيص تقارير الأعطال — تعرَّف على كيفية الإبلاغ عن الاستثناءات التي تم التعامل معها وإضافة مفاتيح مخصّصة وفرض تفريغ سجلات القياس عن بُعد وضبط أخذ العينات.