Testar a implementação do Crashlytics (Web)

Selecionar plataforma: iOS+ Android Web Flutter Unity


Use este guia se você seguiu o guia de primeiros passos e ainda não encontrou falhas no painel Crashlytics.

Forçar a ocorrência de um erro para testar sua implementação

  1. Adicione um código ao app que possa ser usado para forçar uma falha no teste.

    Adicione um botão de teste ou um acionador de rota ao seu app React, Next.js ou Angular que gere um erro de tempo de execução quando clicado:

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

    Se você configurou a captura automática de erros com <FirebaseCrashlytics> (React ou Next.js), provideCrashlytics (Angular) ou <CrashlyticsRoutes> (React Router), o lançamento desse erro captura automaticamente a exceção e a programa para upload.

  2. Crie e execute o app e acione o erro de teste para que ele envie o primeiro relatório de falhas ao Firebase.

  3. No console do Firebase, acesse o painel DevOps e engajamento > Crashlytics para verificar o relatório de falhas do teste:

    1. Selecione seu app da Web no seletor suspenso na parte de cima da página.

    2. Atualize a página. A exceção de teste vai aparecer na tabela Problemas em alguns minutos.

Se você atualizou o console, mas a falha de teste ainda não foi exibida após cinco a dez minutos, consulte a próxima seção sobre como resolver problemas de configuração.

Resolver problemas de configuração

Se você acionou uma falha de teste e ainda não vê relatórios no painel do Crashlytics após cinco a dez minutos, tente executar novamente o fluxo de configuração ou verifique as seguintes configurações do projeto no console:

  • Execute novamente o fluxo de configuração do Crashlytics: é seguro executar novamente o comando de configuração da CLI do Firebase (firebase crashlytics:setup) ou concluir a configuração no console do Firebase, conforme descrito na Etapa 1 do guia de iniciação. A nova execução da configuração ativa automaticamente as APIs ausentes e repara o bucket firebase-telemetry do Cloud Logging e o coletor de roteamento.

  • Verifique o faturamento e as permissões do IAM: confira se o projeto do Firebase está no plano de preços Blaze de pagamento por uso e se a conta tem permissões de proprietário no projeto ao executar a etapa de configuração.

  • Verifique as restrições da chave de API do firebasetelemetry.googleapis.com: na página Credenciais do console do Google Cloud, selecione a chave de API configurada no objeto firebaseConfig (por exemplo, Browser key (auto created by Firebase)). Se a chave tiver restrições de API ativadas, verifique se a API Firebase Telemetry (firebasetelemetry.googleapis.com) está incluída na lista de APIs permitidas. Se esse destino estiver ausente de uma chave de API restrita, as solicitações de upload de rede vão falhar com erros HTTP 403 (proibido) no console do navegador.

  • Verifique as APIs do Google Cloud ativadas: na página APIs e serviços ativados do console do Google Cloud, verifique se a API Firebase Telemetry (firebasetelemetry.googleapis.com), a API Admin do Firebase Telemetry (firebasetelemetryadmin.googleapis.com), a API Cloud Logging (logging.googleapis.com) e o Cloud Storage (storage.googleapis.com) estão ativados para seu projeto.

  • Verifique a Análise de Dados de Registros no bucket de geração de registros: na página Armazenamento de registros do console do Google Cloud, verifique se o bucket firebase-telemetry (local global) existe e tem a Análise de Dados de Registros ativada. Além disso, confira a página Roteador de registros para confirmar se o coletor firebase-telemetry-routing existe.

Capturar e limpar manualmente uma exceção de teste

Se você quiser verificar imediatamente a transmissão de ponta a ponta sem esperar pelo processamento em lote de memória ou pelo descarregamento de páginas, use recordError com 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.");
}

Próximas etapas

  • Receba relatórios de erros legíveis: configure o upload automático de mapas de origem (.js.map) para que os stack traces de produção mostrem os nomes de arquivo e números de linha originais.

  • Personalizar relatórios de erros: saiba como informar exceções processadas, adicionar chaves personalizadas, forçar a limpeza de registros de telemetria e configurar a amostragem.