Browser monitoring ist ein Beta-Feature von AppSignal Labs. Das Paket
@appsignal/browser wird unter dem beta-Tag auf npm veröffentlicht, und
seine Konfiguration und API können sich zwischen Beta-Releases noch ändern.
Teilen Sie Ihr Feedback in unserer
Discord-Community.Es kommen überhaupt keine Daten an
Arbeiten Sie diese Punkte der Reihe nach durch. Jeder davon ist ein vollständiger Stopp: Wenn er zutrifft, wird nichts gesendet.activeergibtfalse. Loggen Sie den Wert, den Sie übergeben, nicht den Ausdruck. Ein Bundler, derprocess.env.NODE_ENVnicht ersetzt, lässt den Vergleich im Browserfalsewerden.init()wurde nie ausgeführt. Konfiguration zu setzen genügt nicht. Bestätigen Sie, dass Ihr Entry Point das Modul importiert, dasinit()aufruft. Prüfen Sie, dass Ihr Build es enthält.- Der Schlüssel ist falsch. Ein falscher Schlüssel führt zu
401. Verwenden Sie den Front-end API key dieser App, keinen Push key. Prüfen Sie, dass er zur richtigen Umgebung gehört. - Requests werden blockiert. Öffnen Sie das Netzwerk-Panel Ihres Browsers und suchen Sie nach einem Request an
/ingest/browser/errorsfür Fehler oder/ingest/browserfür web vitals. Ein blockierter Request erscheint in der Konsole als Verstoß gegen die Content Security Policy: Fügen Siehttps://appsignal-endpoint.netzu Ihrerconnect-src-Direktive hinzu. endpointist nicht gesetzt. Ohneendpointsendet das SDK an die aktuelle Origin. Das erfordert einen Proxy auf Ihrer Domain. Setzen Sie es andernfalls aufhttps://appsignal-endpoint.net.
Fehler kommen an, web vitals nicht
Web vitals werden gestapelt und nicht pro Messung gesendet. Sie werden gesendet, wenn die Seite verborgen wird, wenn sie geschlossen wird und bei einem clientseitigen Routenwechsel. Verlassen Sie die Seite oder wechseln Sie den Tab, und prüfen Sie die Performance-Ansicht erneut. Wenn sie dann noch fehlen, prüfen Sie, ob es speziell CLS und INP sind, die fehlen. Diese beiden benötigen Browser-Performance-Entries, die möglicherweise nicht verfügbar sind.Ein Fehler fehlt
- Er trat auf, bevor
init()lief. Nichts, was davor ausgelöst wird, wird erfasst. Importieren Sie Ihr AppSignal-Setup als ersten Import in Ihrem Entry Point. - Er war eine Wiederholung. Prüfen Sie die Rate-Limits für identische und für alle Fehler.
- Er wurde per sampling verworfen. Prüfen Sie, ob
errors.sampleRateunter1.0liegt. beforeErrorhat ihn verworfen. Ein Callback, dernullzurückgibt, verwirft den Fehler. Loggen Sie das Event am Anfang des Callbacks, um zu bestätigen, was es erhält.- Er wurde in einem iframe ausgelöst. Ein Same-Origin-iframe braucht seinen eigenen
init()-Aufruf. - Es war ein React-Render-Fehler. React lässt Render-Fehler nicht bis zu
windowdurch. Fügen Sie eine Error Boundary hinzu. - Er kam von einem Skript auf einer anderen Domain. Lesen Sie den folgenden Abschnitt.
Fehler von Cross-Origin-Skripten fehlen
Wenn Fehler aus einem Skript fehlen, das auf einem anderen Origin gehostet wird, prüfen Sie dessen Cross-Origin-Einstellungen. Der Browser zeigt für Cross-Origin-Skripte möglicherweise nurScript error. an. Das SDK verwirft diese nichtssagenden Fehler. Beheben Sie es, indem Sie diese Skripte mit CORS-Headern ausliefern, wie unter Assets auf einem CDN beschrieben.
Backtraces sind minifiziert
Backtraces werden über sourcemaps aufgelöst, abgeglichen über den Revisions-String. Setzen SieappVersion auf denselben Wert, den Ihr Build für seine sourcemaps verwendet. Ohne appVersion gibt es nichts, worüber abgeglichen werden könnte, und Backtraces bleiben minifiziert.
Eine Route erzeugt Hunderte von Fehlergruppen
Das Route-Template fehlt, daher verwenden Fehler den rohen Pfad jeder Seite. Rufen Sie bei jeder Router-NavigationsetRouteTemplate("/orders/:id") auf. Neue Fehler gruppieren sich dann unter diesem Template. Für web vitals leitet der Server ein angenähertes Template ab. Ein explizites Template ist zuverlässiger und hilft, das Limit für unterschiedliche Routen zu vermeiden.
Clientseitige Navigation wird nicht gemeldet
Das SDK und manche Router patchen beidehistory.pushState. Das SDK verträgt sich mit einem bereits installierten Patch. Ein Router, der den Patch des SDKs später ersetzt, kann das Tracking der Navigation unterbrechen. Importieren Sie Ihr AppSignal-Setup vor Ihrem Router.
Hash-Router werden nur als Router behandelt, wenn der Hash wie eine Route aussieht, etwa #/orders. Ein bloßes #orders ist von einem Anker innerhalb der Seite nicht zu unterscheiden und wird nicht als Navigation behandelt.
API-Requests schlagen nach Aktivierung von verteiltem Tracing fehl
Ein Cross-Origin-Request, dertraceparent mitführt, benötigt möglicherweise einen CORS-Preflight. Wenn Ihr Browser einen CORS-Fehler meldet, der traceparent nennt, erlauben Sie diesen Header in Access-Control-Allow-Headers Ihrer API. Mehr dazu unter Verteiltes Tracing für Browser.
Ein fehlgeschlagener Request zeigt keine Back-end-Spans
Der Fehler ist angekommen, aber sein Trace enthält nur den Browser-Span. Prüfen Sie, dass der empfangende Service über einen gehosteten Collector berichtet. Sein HTTP-Server braucht außerdem das richtige Instrumentierungspaket, umtraceparent zu lesen.
Keine fehlgeschlagenen Requests werden gemeldet
Requests an Ihre API schlagen fehl, aber es erscheint keinHTTPError- oder TimeoutError-Issue. Prüfen Sie, dass jeder Request einem Muster in tracePropagationTargets entspricht. Ein Muster braucht einen Host und einen Pfad: Weder /api/** noch api.example.com allein passen auf irgendetwas. Manche Fehlschläge werden nie gemeldet:
- Ein Request im
no-cors-Modus. - Eine 4xx-Antwort.
- Ein Request, der auf
privacy.networkBlocklistpasst. - Ein Timeout, während das Gerät offline ist.
Netzwerk-Breadcrumbs haben keine Zeitangaben
Der Request war cross-origin und der Server hat keinenTiming-Allow-Origin-Header gesendet. Mehr dazu unter Netzwerk-Breadcrumbs lesen.
Hilfe bekommen
Geben Sie den Namen Ihrer App, die Version von@appsignal/browser sowie Browser und Version an, in denen Sie das Problem sehen. Erreichen Sie uns über unsere Support-Kanäle oder für Beta-Feedback in unserer Discord-Community.