Par erreurs silencieuses, j'entends ici que tout problème ne produit aucune indication visible.
Quelques exemples les plus courants :
Comprenons chacun par un en détail et comment les déboguer :
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
Avez-vous rencontré un code Node.js qui :
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"
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"
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!