Sentry est intégré au frontend Nuxt pour le monitoring des erreurs et des performances en production. Il permet de capturer automatiquement les erreurs JavaScript côté client et serveur, d'enregistrer les sessions utilisateurs avec replay, et de suivre les releases pour faciliter le debugging.
Sentry est configuré séparément pour le client et le serveur Nuxt :
La configuration utilise le module @sentry/nuxt qui simplifie l'intégration avec Nuxt 4.
Deux fichiers de configuration distincts gèrent l'initialisation de Sentry :
Client (sentry.client.config.ts) :
import * as Sentry from "@sentry/nuxt";
Sentry.init({
dsn: useRuntimeConfig().public.sentryDsn,
release: useRuntimeConfig().public.sentryRelease,
environment: useRuntimeConfig().public.sentryEnvironment,
debug: false,
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
integrations: [
Sentry.replayIntegration({
maskAllText: false,
blockAllMedia: false,
}),
],
});
Serveur (sentry.server.config.ts) :
import * as Sentry from "@sentry/nuxt";
if (process.env.NUXT_PUBLIC_SENTRY_DSN) {
Sentry.init({
dsn: process.env.NUXT_PUBLIC_SENTRY_DSN,
release: process.env.NUXT_PUBLIC_SENTRY_RELEASE || "dev",
environment: process.env.NUXT_PUBLIC_SENTRY_ENVIRONMENT || "dev",
debug: false,
});
}
Dans nuxt.config.ts, la configuration Sentry inclut les options d'upload des source maps :
sentry: {
sourceMapsUploadOptions: {
org: "dotsafe",
project: "save-france-front",
url: "https://sentry.dotsafe.fr/",
},
},
Les variables d'environnement sont définies dans runtimeConfig.public :
runtimeConfig: {
public: {
sentryDsn: "",
sentryRelease: "",
sentryEnvironment: "",
},
},
Les variables suivantes doivent être configurées :
NUXT_PUBLIC_SENTRY_DSN : DSN de votre projet SentryNUXT_PUBLIC_SENTRY_RELEASE : Version/release de l'application (ex: 1.0.0 ou hash de commit)NUXT_PUBLIC_SENTRY_ENVIRONMENT : Environnement (dev, staging, production)Le replay de session est activé avec :
replaysSessionSampleRate: 0.1)replaysOnErrorSampleRate: 1.0)Cela permet de visualiser exactement ce que l'utilisateur a fait avant qu'une erreur ne se produise.
Les source maps sont uploadées automatiquement vers Sentry lors du build pour permettre un debugging avec le code source original au lieu du code minifié.
Une intégration de feedback utilisateur est disponible mais commentée dans la configuration. Pour l'activer :
Sentry.feedbackIntegration({
autoInject: true,
showBranding: false,
colorScheme: "light",
triggerLabel: "Donner mon avis",
// ... autres options
}),
En développement, Sentry peut être désactivé en ne définissant pas NUXT_PUBLIC_SENTRY_DSN. Le module ne s'initialisera pas côté serveur si la variable n'est pas présente.
Pour activer le mode debug temporairement :
debug: true,
dev, staging, prod) pour filtrer les erreurs@sentry/nuxt pour une intégration simplifiée avec Nuxt 4