JavaScript navigateur
Installez le SDK navigateur de SnagSpy, capturez votre première erreur, et rendez la pile d’appels lisible. Une quinzaine de minutes.
Prérequis
Vous utilisez un framework ? Ce guide couvre le JavaScript natif. Les guides React, Vue, Next.js et les autres n’existent pas encore — le SDK fonctionne dans ces applications, mais rien ici n’est spécifique à leur cycle de vie.
Il vous faut :
- Un compte SnagSpy et un projet
- Le DSN de ce projet
- Une application qui tourne dans un navigateur
1Installer
Le SDK navigateur est un paquet npm distinct de la CLI, parce qu’il est livré à l’intérieur de votre application et devient une dépendance de la vôtre.
Pas encore publié Le paquet @snagspy/replay n’est pas encore sur le registre npm public : la commande ci-dessous échouera aujourd’hui. Écrivez-nous pour obtenir une archive en attendant. La CLI, elle, est publiée et s’installe normalement.
npm install @snagspy/replay2Configurer
Initialiser le suivi des erreurs
Appelez init aussi tôt que possible — une erreur levée avant cet appel n’est pas capturée, parce que les gestionnaires globaux ne sont pas encore posés. init ne lève jamais d’exception : un DSN invalide produit un avertissement et un client inerte, jamais une page cassée.
import { init } from '@snagspy/replay/errors'
const snagspy = init({
dsn: globalThis._importMeta_.env.VITE_SNAGSPY_DSN,
release: globalThis._importMeta_.env.VITE_COMMIT_SHA,
environment: 'production',
})Les options qui comptent
dsn est le seul champ obligatoire. Les trois suivants changent ce que vous verrez dans le tableau de bord :
Rendre la pile d’appels lisible
Une pile minifiée nomme t.js:1:4821. Envoyez les source maps du build avec la CLI, en passant la même version que celle donnée à init — c’est ce qui rattache les deux.
npx snagspy upload --project <project-id> --release "$COMMIT_SHA" ./distRelier la relecture de session
Le point d’entrée racine est l’enregistreur, pas le suivi d’erreurs : son init renvoie une Session. Passez son sessionID au suivi d’erreurs pour joindre les deux.
import { init as record } from '@snagspy/replay'
import { init } from '@snagspy/replay/errors'
const session = record({ dsn: DSN })
const snagspy = init({ dsn: DSN, sessionID: session.sessionID ?? undefined })3Vérifier
Levez une erreur depuis la page elle-même et regardez-la arriver.
<button onclick="throw new Error('SnagSpy test error')">
Break the world
</button>captureException sert aux erreurs que votre code a rattrapées : leur niveau par défaut est warning, parce que l’application a continué. Une erreur non rattrapée est toujours error.
try {
risky()
} catch (error) {
snagspy.captureException(error, { level: 'error' })
}4Étapes suivantes
À ce stade, les erreurs de votre application arrivent dans SnagSpy. Ensuite :