Débogage avec Node.js

Je pense que le débogage est une partie du cycle de développement aussi cruciale qu’un autre. Il est donc toujours bon de démystifier le travail de débogage, en le rendant plus facile et moins fastidieux, afin que nous puissions terminer le travail à temps et réduire le stress.. 

Comme la majorité des langues, Node fournit d’excellents outils de débogage permettant de détecter et de corriger facilement les défauts de code. Je préconise toujours l'utilisation d'un débogueur parce que personnellement, je trouve que l'utilisation de débogueurs élimine le besoin de devinettes et fait de nous de meilleurs développeurs en général.. 

Ce guide est destiné aux développeurs et aux administrateurs qui travaillent déjà avec Node. Cela suppose une compréhension fondamentale de la langue à un niveau pratique.

Utiliser le débogueur

Node.js comprend un utilitaire complet de débogage hors processus accessible via un simple protocole basé sur TCP et un client de débogage intégré.

Par exemple, pour utiliser le débogueur pour déboguer un fichier nommé script.js, vous pouvez simplement appeler noeud en utilisant le déboguer signaler comme suit:

$ node debug script.js < debugger listening on port 5858 connecting… ok debug>

Points d'arrêt

Maintenant que vous avez démarré une session de débogage, n'importe où dans votre script que vous appelez débogueur de sera un point d'arrêt pour le débogueur. 

Ainsi, par exemple, ajoutons une instruction de débogage au fichier script.js:

toto = 2; setTimeout (() => débogueur; console.log ('bugger');; 1000); console.log ('de');

Maintenant, si nous exécutons ce script, le débogueur sera appelé sur notre point d'arrêt et nous pouvons contrôler le contrôle du script via cont ou suivant commandes (c ou n pour faire court).

Nous pouvons suspendre l'exécution du script à tout moment en utilisant p.

$ node debug script.js < debugger listening on port 5858 connecting… ok break in /home/tom/web/envatodebug/myscript.js:1 1 foo = 5; 2 setTimeout(() => 3 débogueur; debug> cont < de break in /home/tom/web/envatodebug/myscript.js:3 1 foo = 5; 2 setTimeout(() => 3 débogueur; 4 console.log ('bugger'); 5, 1000); debug> prochaine pause dans /home/tom/web/envatodebug/myscript.js:4 2 setTimeout (() => 3 débogueur; 4 console.log ('bugger'); 5, 1000); 6 console.log ('de'); debug> next < bugger break in /home/tom/web/envatodebug/myscript.js:5 3 debugger; 4 console.log('bugger'); 5 , 1000); 6 console.log('de'); 7 debug> quitter

REPL

$ node debug script.js < debugger listening on port 5858 connecting… ok debug> repl Appuyez sur Ctrl + C pour quitter le débogage repl> foo 2> 2 + 2 4

La boucle lecture-évaluation-impression du débogueur vous permet de saisir le code de manière interactive pendant l'exécution et d'accéder ainsi à l'état de l'application et à toutes ses variables et méthodes au moment de l'exécution. Ceci est un outil très puissant que vous pouvez utiliser pour assainir rapidement votre application..

En règle générale, le REPL est disponible en tant qu'agent autonome et en tant que partie du débogueur, et il vous permet d'exécuter JavaScript de manière interactive. Par exemple, tapez simplement nœud à l'invite sans options, et vous recevrez une interface REPL dans laquelle vous pouvez écrire du code et voir la sortie.

Entrer et sortir

J'ai mentionné plus tôt le cont et suivant (c et n), qui nous permettent de continuer l’exécution de code une fois le point d’arrêt atteint. En plus de cela, lorsque nous parcourons le code, nous pouvons également passer à une méthode ou à sa portée parente..

Utilisez les commandes étape pour intervenir et en dehors sortir, ou s et o pour faire court.

Retracer

Utilisation la trace ou bt pour obtenir une sortie de la trace pour le cadre d'exécution actuel.

Redémarrage

Utilisation redémarrer ou r pour relancer votre script depuis le début de l'exécution.

Autres moyens de se connecter au débogueur

Les utilisateurs avancés peuvent accéder au débogueur également en démarrant Node.js avec le --déboguer indicateur de ligne de commande, ou bien en signalant un processus Node.js existant avec SIGUSR1.

Une fois qu'un processus a été défini en mode débogage de cette manière, il peut être connecté à l'aide du débogueur Node.js à l'aide de la commande pid du processus en cours ou via une référence URI (par exemple, localhost: port) pour connecter le débogueur d’écoute:

  • nœud debug -p  se connecte au processus via le pid.
  • débogage de noeud  se connecte au processus via l'URI tel que localhost: 5858.

Utilisation de l'inspecteur de nœud

En plus de l'outil de débogage CLI, Node Inspector fournit également un inspecteur d'interface graphique dans le navigateur Web (ne prenant actuellement en charge que Chrome et Opera)..

Pour utiliser le débogueur, installez simplement comme suit:

npm install -g node-inspector

Maintenant que l'inspecteur de nœud est installé, nous pouvons déboguer notre script.js avec:

node-debug script.js

Votre shell va maintenant afficher ce qui suit et ouvrira probablement le navigateur Web à l’URL si Chrome ou Opera est défini par défaut sur votre système d’exploitation..

L'inspecteur de nœud est maintenant disponible à partir de http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858 Débogage du débogueur 'script.js' à l'écoute sur le port 5858

Dans votre navigateur Web, vous pourrez désormais déboguer votre application dans un environnement similaire à celui du package des outils de développement. La définition des points d'arrêt et du code d'affichage est désormais intégrée à la vue de votre navigateur. Prendre plaisir!

Conclusion

Déboguer n'a pas besoin d'être un cauchemar, ni stressant. 

Définir des points d'arrêt et parcourir le code est si simple dans Node. C'est une expérience très similaire à Ruby, et si vous essayez de comprendre une application qui vous a été donnée, ouvrir l'application en mode débogage et suspendre l'exécution est un moyen fantastique d'apprendre dans un laps de temps rapide..