← Tous les articles

Fenêtres sur le frontend

console.error ne fait pas tout — l'Output Console attrape les erreurs invisibles

L'Output Console de JustZix montre ce qu'une page écrit dans la console — sans ouvrir les DevTools. Mais pendant longtemps, elle n'affichait que ce que le code appelait explicitement via console.log. Or la moitié de ce que vous voyez dans les DevTools ne vient pas du tout de console.log. Depuis la version 2.13.86, cela a changé.

console.error n'est pas la même chose qu'une erreur

Il est facile de confondre deux choses :

Chrome attrape les plantages lui-même et les montre dans la console. Si l'Output Console n'enveloppe que console.*, ces plantages lui échappent — et ce sont souvent les choses les plus importantes, car ce sont elles qui cassent la page.

Ce qui est capturé maintenant

1. Les exceptions non interceptées

Un throw non intercepté, une erreur de syntaxe, une erreur d'exécution — Chrome dispatche alors un événement error sur l'objet window. L'Output Console écoute cet événement et enregistre le message avec la stack trace et un emplacement fichier:ligne:colonne.

2. Les rejets de promesses non gérés

Un someAsync().then(...) sans .catch, ou un await qui a levé une erreur que personne n'a interceptée — Chrome dispatche un événement unhandledrejection. L'Output Console l'écoute et affiche la raison du rejet comme entrée erreur préfixée de « Unhandled promise rejection ».

Pourquoi la phase de capture

Les deux listeners sont attachés en phase de capture. La raison : la page peut aussi avoir son propre handler error ou unhandledrejection qui appelle preventDefault() ou stopPropagation(). La phase de capture s'exécute avant la phase de bouillonnement, donc l'Output Console voit l'événement avant que le code de la page puisse le faire taire.

Un test de 30 secondes

Ouvrez une JS Console (ou une TEMP JS Console via Ctrl+Alt+J) et tapez :

throw new Error('test boom')

Une entrée rouge avec une stack trace devrait apparaître dans l'Output Console. Maintenant :

Promise.reject('async boom')

« Unhandled promise rejection: async boom » devrait apparaître. Si vous voyez les deux — la capture d'erreurs fonctionne.

Ce que nous n'attrapons toujours PAS — et pourquoi

Ce sont des limites délibérées, pas des manques. L'Output Console montre les erreurs JavaScript de la page — ce que vous voulez généralement voir — pas tout le bruit de diagnostic du navigateur.

Cas d'usage — surveillance de production sans DevTools

Snappez une Output Console au bord de l'onglet et laissez-la. Vous ouvrez votre propre site après un déploiement — si quelque chose plante, vous le voyez immédiatement, même si l'erreur ne vient pas de votre console.error. Pour un testeur QA, c'est la différence entre « la page a l'air OK » et « la page a l'air OK, mais un TypeError non intercepté se déclenche en arrière-plan ».

À voir aussi

Installez JustZix — et voyez les erreurs de la page avant vos utilisateurs.

Notez cet article

Aucune note — soyez le premier.

Essayez vous-même

Installez JustZix et collez n'importe quel snippet de cet article. Deux minutes de zéro à une règle fonctionnelle sur tous vos appareils.

Obtenir JustZix

Fonctionnalités · Comment ça marche · Exemples · Cas d'usage