Maison >interface Web >js tutoriel >commandes pour déboguer les « erreurs silencieuses » en JavaScript

commandes pour déboguer les « erreurs silencieuses » en JavaScript

Susan Sarandon
Susan Sarandonoriginal
2024-12-21 04:21:10774parcourir

ommands to Debug “Silent Errors” in JavaScript

Par erreurs silencieuses, j'entends ici que tout problème ne produit aucune indication visible.

Quelques exemples les plus courants :

  1. Blocs de capture manquants
  2. Promesses à long terme
  3. Conditions de course en État partagé
  4. Écouteurs d'événements erronés

Comprenons chacun par un en détail et comment les déboguer :


#1 : Débogage des blocs Catch manquants

Ces erreurs se produisent lorsque vous ne parvenez pas à attacher le gestionnaire .catch() à votre promesse. En conséquence, lorsque la promesse est rejetée, aucune erreur n’apparaît.

Vous pouvez déboguer cette erreur en exécutant votre code avec l'argument de rejets non gérés. Cela oblige le nœud à terminer le processus en cas de rejet de promesse non géré, rendant l'erreur explicite.

node --unhandled-rejections=strict script.js

#2 : Débogage Promesses à long terme

Avez-vous rencontré un code Node.js qui :

  • Ne se termine jamais
  • Consomme une mémoire excessive au fil du temps

Si oui, cela est probablement dû à une promesse non résolue ou à une boucle infinie quelque part.

Vous pouvez valider le problème en limitant le temps d'exécution du script comme ci-dessous :

timeout 10s node script.js || echo "Warning: Unresolved promise or infinite loop detected"

#3 : Débogage des Conditions de course à l'état partagé

Les conditions de course à l'état partagé se produisent lorsque plusieurs rappels accèdent simultanément à l'état partagé.

En raison de la condition de concurrence critique, le programme entraîne des résultats imprévisibles provoquant des incohérences de données sans symptômes visibles lors des tests.

Mais heureusement, Node fournit en fait une option trace-async-hooks pour identifier de tels modèles d'exécution.

node --trace-async-hooks script.js 2>&1 | grep "asyncId"

#4 : Débogage des Écouteurs d'événements erronés

Parlons enfin des erreurs au sein des écouteurs d'événements.

Ceux-ci sont causés par des rejets de promesses non gérés lors du rappel de l'auditeur d'événement. Cela conduit à une erreur qui ne se propage jamais au contexte d'exécution principal.

Vous pouvez identifier ces erreurs en redirigeant tous les journaux d'événements de nœuds vers un filtre grep pour capturer les erreurs émises lors de la gestion des événements

node -r events script.js 2>&1 | grep "Error"

Et c'est tout.

J'espère que ces commandes vous seront utiles lors du débogage des erreurs silencieuses dans le code JavaScript.

Aussi, commentez ci-dessous quelle erreur silencieuse vous ennuie le plus ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn