Le module de console intégré en Node.js

Pourquoi existe t'il un module console en Node.js puisqu'il existe des équivalences dans le module process ? Une traduction de l'article The built-in console module

Classé dans Pour commencer

Traduction

Toute personne familière avec le développement côté navigateur a probablement utilisé console.log à des fins de débogage - Node.js a mis en œuvre un objet console intégré pour imiter une grande partie de cette expérience. Cependant, comme nous travaillons côté serveur, il englobe stdout, stdin et stderr au lieu de la console de débogage du navigateur.

En raison de ce parallèle avec le navigateur, le module console est devenu le foyer d'une grande partie de la fonctionnalité de sortie standard de Node.js. La plus simple est console.log().

console.log('Salut, tout le monde !');
console.log('Ce script est :', __filename);
console.log(__filename, process.title, process.argv);

Le premier exemple, le plus simple, se contente d'imprimer la chaîne fournie sur stdout. Elle peut également être utilisée pour afficher le contenu des variables, comme le montre le deuxième exemple ; de plus, console.dir() est appelée sur tous les objets passés en argument, énumérant leurs propriétés.

Conseil : console.log() accepte trois caractères de format, %s, %d, et %j. Ces caractères de format peuvent être utilisés pour insérer des chaînes de caractères, des entiers ou des données JSON dans votre sortie - l'ordre des caractères de format doit correspondre à l'ordre des arguments.

var name = 'Harry',
    number = 17,
    myObj = {
      propOne: 'truc',
      propTwo: 'plus de truc'
    };
console.log('Mon nom est %s, mon nombre est %d, mon objet est %j', name, number, myObj);

Un problème avec console.log, et toutes les fonctions qui en dépendent, est qu'elle met en mémoire tampon la sortie, c'est à dire qu'elle est asynchrone. Ainsi, si votre processus se termine soudainement, que ce soit à cause d'une exception ou de process.exit(), il est tout à fait possible que la sortie mise en mémoire tampon n'atteigne jamais l'écran. Cela peut causer beaucoup de frustration, alors faites attention à cette situation malheureuse.

console.error() fonctionne de la même manière que console.log, sauf que la sortie est envoyée à stderr au lieu de stdout. Il s'agit en fait d'une différence extrêmement importante, car stderr est toujours écrit de manière synchrone. Toute utilisation de console.error, ou de toute autre fonction du noyau Node.js qui écrit sur stderr, bloquera votre processus jusqu'à ce que la sortie ait été écrite. Ceci est utile pour les messages d'erreur ; vous les obtenez exactement au moment où ils se produisent, mais s'il est utilisé partout, il peut considérablement ralentir votre processus.

console.dir(), comme mentionné ci-dessus, est un alias de util.inspect() ; il est utilisé pour énumérer les propriétés des objets. En savoir plus.

Cela couvre les fonctionnalités de base du module console, mais il existe quelques autres méthodes qui méritent d'être mentionnées. Tout d'abord, le module console permet de marquer le temps via console.time() et console.timeEnd(). Voici un exemple :

console.time('myTimer');
var string = '';
for (var i = 0; i < 300; i++) {
  (function (i) {
    string += 'aaaa' + i.toString();
  })(i);
}
console.timeEnd('myTimer');

Cela permet de déterminer le temps nécessaire pour effectuer les actions entre les appels console.time et console.timeEnd.

Une dernière fonction qui mérite d'être mentionnée est console.trace(), qui imprime une trace de pile à son emplacement dans votre code sans lancer une erreur. Cela peut parfois être utile si vous souhaitez savoir d'où une fonction défaillante particulière a été appelée.

Lire dans une autre langue