| 选择平台: | iOS+ Android Web Flutter Unity |
如果您已按照入门指南操作,但仍未在 Crashlytics 信息中心内看到崩溃,请使用本指南。
强制造成崩溃以便测试您的实现
向应用添加可用于强制造成测试崩溃的代码。
向 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) 配置了自动错误捕获,则抛出此错误会自动捕获异常并安排上传。构建并运行您的应用,然后触发测试错误,以便您的应用向 Firebase 发送其第一个崩溃报告。
在 Firebase 控制台中,前往 DevOps 和互动 > Crashlytics 信息中心,查看您的测试崩溃报告:
从页面顶部的下拉选择器中选择您的 Web 应用。
刷新页面。您的测试异常应该会在几分钟内显示在问题表中。
如果您已刷新控制台,但在 5 到 10 分钟后仍未看到测试崩溃报告,请参阅下一部分,了解如何排查设置问题。
排查设置问题
如果您触发了测试崩溃,但在 5 到 10 分钟后仍未在 Crashlytics 信息中心内看到报告,请尝试重新运行设置流程,或在控制台中验证以下项目配置:
重新运行 Crashlytics 设置流程:您可以安全地重新运行 Firebase CLI 设置命令 (
firebase crashlytics:setup),或按照入门指南第 1 步中的说明在 Firebase 控制台中完成设置。重新运行设置会自动启用所有缺失的 API,并修复firebase-telemetryCloud Logging 存储桶和路由接收器。检查结算和 IAM 权限:确保您的 Firebase 项目采用随用随付 Blaze 定价方案,并且您的账号在运行设置步骤时拥有该项目的所有者权限。
验证
firebasetelemetry.googleapis.comAPI 密钥限制:在 Google Cloud 控制台凭证页面中,选择在firebaseConfig对象中配置的 API 密钥(例如Browser key (auto created by Firebase))。如果该密钥启用了 API 限制,请验证 Firebase Telemetry API (firebasetelemetry.googleapis.com) 是否包含在允许的 API 列表中。如果受限 API 密钥中缺少此目标,网络上传请求将失败,并在浏览器控制台中显示 HTTP 403(禁止)错误。检查已启用的 Google Cloud API:在 Google Cloud 控制台的已启用的 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)。验证日志记录存储桶上的日志分析:在 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.");
}