1257 votes

Comment puis-je obtenir l'objet complet dans la console.log() de Node.js, plutôt que '[Object]' ?

J'ai cet objet :

const myObject = {
   "a":"a",
   "b":{
      "c":"c",
      "d":{
         "e":"e",
         "f":{
            "g":"g",
            "h":{
               "i":"i"
            }
         }
      }
   }
};

Mais quand j'essaie de le montrer en utilisant console.log(myObject) je reçois ce message :

{ a: 'a', b: { c: 'c', d: { e: 'e', f: [Object] } } }

Comment puis-je obtenir l'objet complet, y compris le contenu de la propriété f ?

14voto

Nirav Sutariya Points 295

Je pense que cela pourrait vous être utile.

const myObject = {
   "a":"a",
   "b":{
      "c":"c",
      "d":{
         "e":"e",
         "f":{
            "g":"g",
            "h":{
               "i":"i"
            }
         }
      }
   }
};

console.log(JSON.stringify(myObject, null, '\t'));

Comme mentionné dans cette réponse :

JSON.stringify Le troisième paramètre de l'outil définit l'insertion d'un espace blanc pour l'impression. Il peut s'agir d'une chaîne de caractères ou d'un nombre (nombre d'espaces).

7voto

harish2704 Points 46

Vous pouvez simplement ajouter un inspect() à votre objet qui remplacera la représentation de l'objet dans console.log messages

eg :

var myObject = {
   "a":"a",
   "b":{
      "c":"c",
      "d":{
         "e":"e",
         "f":{
            "g":"g",
            "h":{
               "i":"i"
            }
         }
      }
   }
};
myObject.inspect = function(){ return JSON.stringify( this, null, ' ' ); }

alors, votre objet sera représenté comme il se doit à la fois dans console.log et node shell.


Mise à jour :

object.inspect a été déprécié ( https://github.com/nodejs/node/issues/15549 ). Utilisez myObject [util.inspect.custom] à la place :

const util = require('util')

var myObject = {
  /* nested properties not shown */
}

myObject[util.inspect.custom] = function(){ return JSON.stringify( this, null, 4 ); }

console.log(util.inspect(myObject))

5voto

Stephen Blum Points 4983

JSON.stringify()

let myVar = {a: {b: {c: 1}}};
console.log(JSON.stringify( myVar, null, 4 ))

Idéal pour l'inspection approfondie des objets de données. Cette approche fonctionne sur les tableaux imbriqués et les objets imbriqués avec des tableaux.

3voto

Chintan Points 103

Une astuce simple serait d'utiliser debug pour ajouter DEBUG_DEPTH=null comme variable d'environnement lors de l'exécution du script.

Ex.

DEBUG=* DEBUG_DEPTH=null node index.js

Dans votre code

const debug = require('debug');
debug("%O", myObject);

2voto

Lloyd Points 3597

Le REPL des nœuds dispose d'une solution intégrée permettant de modifier la façon dont les objets sont affichés, cf. aquí .

Le module REPL utilise en interne util.inspect() lors de l'impression des valeurs. Cependant, util.inspect délègue l'appel à l'objet inspect() s'il en a une.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X