Comment utiliser l'outil d'inspection en Node.js

Comment déboguer les objets en Node.js ? Une traduction de l'article How to use util.inspect

Classé dans Pour commencer

Traduction

Node.js fournit une fonction utilitaire, à des fins de débogage, qui renvoie une représentation sous forme de chaîne de caractères d'un objet. util.inspect() peut être une véritable bouée de sauvetage lorsqu'on travaille avec les propriétés d'objets complexes et volumineux.

Nous allons donner un exemple de base. util.inspect() peut être utilisé sur n'importe quel objet - une bonne démonstration sera l'un des objets intégrés de Node.js. Essayez ceci dans le Node.js REPL (tapez node dans votre ligne de commande sans argument) :

var util = require('util');
util.inspect(console);

La sortie sera :

'{ log: [Function], info: [Function], warn: [Function], error: [Function], dir: [Function], time: [Function], timeEnd: [Function], trace: [Function], assert: [Function] }'

C'est une liste de toutes les propriétés énumérables de l'objet console. Il est également intéressant de noter que console.dir est une enveloppe autour de util.inspect qui utilise ses arguments par défaut.

Dans le REPL, util.inspect retournera immédiatement sa sortie - ce qui n'est généralement pas le cas. Dans le contexte d'un code Node.js normal dans un fichier, quelque chose doit être fait avec la sortie. La chose la plus simple à faire :

console.log(util.inspect(myObj));

On peut également passer à util.inspect plusieurs arguments optionnels, présentés ici avec leurs valeurs par défaut :

util.inspect(object, showHidden=false, depth=2, colorize=true);

Par exemple, util.inspect(myObj, true, 7, true) inspecterait monObj, montrant toutes les propriétés cachées et non cachées jusqu'à une profondeur de 7 et coloriserait la sortie. Passons en revue les arguments individuellement.

L'argument de la profondeur est le nombre de niveaux de profondeur dans un objet imbriqué à parcourir - il est de 2 par défaut. Si vous le mettez à null, la récursion se fera "jusqu'au bout", montrant chaque niveau. Comparez la (taille de) la sortie de ces deux instructions util.inspect dans le REPL :

var http = require('http');
util.inspect(http, true, 1);
util.inspect(http, true, 3);

L'argument facultatif showHidden est un booléen qui détermine si les propriétés "non énumérables" d'un objet seront affichées ou non. La valeur par défaut est false, ce qui permet d'obtenir un résultat beaucoup plus lisible. Ce n'est pas quelque chose dont un débutant doit se préoccuper la plupart du temps, mais cela vaut la peine de le démontrer brièvement. Une fois de plus, essayez ce qui suit dans le REPL :

var util = require('util');
util.inspect(console, true);

Enfin, l'argument facultatif colorize est un booléen qui ajoute les codes d'échappement ANSI à la sortie de la chaîne. Lorsqu'elle est enregistrée dans une fenêtre de terminal, elle devrait être joliment imprimée avec des couleurs.

var util = require('util');
console.log(util.inspect({a:1, b:"b"}, false,2,true));

Lire dans une autre langue