Как я могу получить полный объект в console.log () Node.js, а не '[Object]'?

При отладке с помощьюconsole.log()Как я могу получить полный объект?

const myObject = {
   "a":"a",
   "b":{
      "c":"c",
      "d":{
         "e":"e",
         "f":{
            "g":"g",
            "h":{
               "i":"i"
            }
         }
      }
   }
};    
console.log(myObject);

Выходы:

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

Но я хочу также увидеть содержание собственностиf.

Ответы на вопрос(12)

Попробуй это:

console.dir(myObject,{depth:null})
 21 янв. 2019 г., 18:50
Это самое короткое решение!

console.log('connection : %j', myObject);
 23 февр. 2016 г., 23:37
все еще очень полезно, и быстрее копировать и вставлять вjsonlint.com чем требующийutils :)
 09 нояб. 2018 г., 07:43
Это очень удобно и полезно, если объект маленький
 02 авг. 2014 г., 00:04
Хороший трюк, но вывод не будет предварительно подтвержден, что затруднит чтение больших объектов (суть вопроса).
 12 дек. 2017 г., 22:07
Я думаю, что это замечательно, когда у вас есть редактор, который будет форматировать JSON для вас, но вам просто нужно скопировать его из REPL

console.log(JSON.stringify(myObject, null, 3));

util.inspect.defaultOptions:

require("util").inspect.defaultOptions.depth = null;
console.log(myObject);
Решение Вопроса

util.inspect():

const util = require('util')

console.log(util.inspect(myObject, {showHidden: false, depth: null}))

// alternative shortcut
console.log(util.inspect(myObject, false, null, true /* enable colors */))

Выходы

{ a: 'a',  b: { c: 'c', d: { e: 'e', f: { g: 'g', h: { i: 'i' } } } } }

Увидетьutil.inspect() docs.

 23 февр. 2016 г., 23:36
@ mklement0 У меня есть узел v5.3.0 и когда яconsole.log(obj) он по-прежнему печатает [Object] для глубоко вложенных объектов :( Мне бы очень хотелось, чтобы он вел себя так, как вы описываете.
 17 дек. 2014 г., 22:03
Хорошо знать; не уверен, когда это было введено, но как минимум на узлеv0.10.33 console.log() implicitly относитсяutil.inspect() к его аргументам, предполагая, что 1-й не является форматной строкой. Если вы довольныutil.inspect()параметры по умолчанию, простоconsole.log(myObject) будет делать - не нужно требоватьutil; console.dir() делает то же самое, но принимает только `объект для проверки; по крайней мереv0.11.14Вы можете передать объект параметров дляutil.inspect() как второй аргумент; мой ответ имеет больше деталей.
 26 апр. 2017 г., 07:08
console.dir(myObject, { depth: null }) это работа для меня
 05 дек. 2014 г., 12:29
Хорошее решение. Хотя нет необходимости указывать {showHidden: false}, если по умолчанию установлено значение false.
 24 февр. 2016 г., 01:02
@SSH:console.log() являетсяinvariably Ограничен2 уровни (потому что он используетutil.inspect()по умолчанию, не позволяя изменить его);console.dir() имеет то же ограничение по умолчанию, но вы можете передать объект параметров в качестве второго аргумента, чтобы изменить его (который передается вutil.inspect(); Обратите внимание, чтоconsole.dir()  может только когда-либо печатать1 объект за один раз, однако. Для печати с неограниченной глубиной используйтеconsole.dir(myObject, { depth: null }).

ектов, см.Вот.

The REPL module internally uses util.inspect(), when printing values. However, util.inspect delegates the call to the object's inspect() function, if it has one.

JSON.stringifyи получить хороший отступ, а также, возможно, легче запомнить синтаксис.

console.log(JSON.stringify(myObject, null, 4));
{
    "a": "a",
    "b": {
        "c": "c",
        "d": {
            "e": "e",
            "f": {
                "g": "g",
                "h": {
                    "i": "i"
                }
            }
        }
    }
}

Третий аргумент устанавливает уровень отступа, так что вы можете настроить его по своему усмотрению.

Более подробно здесь, если это необходимо:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

 01 февр. 2015 г., 13:37
имейте в виду, что это не будет показывать неопределенные значения
 17 янв. 2014 г., 17:47
Обратите внимание, что вы не можете JSON.stringify объекты сcircular references, Как, например, это происходит с объектами DOM. Stringify выдаст сообщение «Ошибка: преобразование круговой структуры в JSON».
 23 февр. 2013 г., 02:22
+1 за то, что не нужно ничего требовать
 23 дек. 2015 г., 06:57
это не полный объект. объекты, содержащие только функции, будут {}. Конечно, это может быть положительным или отрицательным в зависимости от того, что вы хотите распечатать.
 24 мая 2012 г., 01:47
Ах, это тоже удобно! Спасибо!

--inspect вариант сChrome DevTools for Node.

node.exe --inspect www.js

открытоchrome://inspect/#devices в Chrome и нажмитеOpen dedicated DevTools for Node

Теперь каждый зарегистрированный объект доступен в инспекторе, как обычный JS, работающий в Chrome.

enter image description here

Нет необходимости повторно открывать инспектор, он подключается к узлу автоматически, как только узел запускается или перезапускается. И то и другое--inspect а такжеChrome DevTools for Node может быть недоступно в более старых версиях Node и Chrome.

 10 мар. 2019 г., 16:17
Сообщение для меня: попробуйте - & gt;node.exe --inspect index.js

Простой трюк будет использоватьdebug модуль для добавленияDEBUG_DEPTH=null в качестве переменной среды при запуске скрипта

Ex.

DEBUG = * DEBUG_DEPTH = нулевой узел index.js

В вашем коде

const debug = require('debug');
debug("%O", myObject);
 18 нояб. 2017 г., 09:17
@Bala Вам нужно будет установить & quot; debug & quot; модуль в вашем проекте & quot; npm install debug --save & quot;
 17 нояб. 2017 г., 03:23
Его ошибка выдачи, такая как «отладка не является функцией»

console.dir это все, что тебе нужно.

http://nodejs.org/api/console.html#console_console_dir_obj

Uses util.inspect on obj and prints resulting string to stdout.

используйте утилиту, если вам нужно больше контроля.

 17 дек. 2014 г., 21:11
Начиная с версии (как минимум) v0.11.14 вы можете передать объект параметров в качестве второго аргумента, который передаетсяutil.inspect().

// more compact and colour can be applied (better for process managers logging)

console.dir(queryArgs, { depth: null, colors: true });

// clear list of actual values

console.log(JSON.stringify(queryArgs, undefined, 2));

inspect() метод для вашего объекта, который будет переопределять представление объекта вconsole.log Сообщения

например:

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

тогда ваш объект будет представлен как требуется как в console.log, так и в оболочке узла

Ваш ответ на вопрос