Компиляция множества полезных ответов из (как минимум) Node.js v0.10.33(стабильный) / v0.11.14(нестабильный) предположительно через (как минимум) v7.7.4(версия, текущая на момент последнего обновления этого ответа). Кончик шляпы Рори О'Кейну за помощь.
ТЛ; др
Чтобы получить желаемый результат для примера в вопросе, используйте console.dir():
console.dir(myObject, { depth: null }); // `depth: null` ensures unlimited recursion
Почему нет util.inspect()? Потому что это уже в основе диагностической продукции: console.log()и console.dir(), а также Node.js РЕПЛ использовать util.inspect() неявно . Это вообще не нужноrequire('util') и звонить util.inspect()напрямую.
Подробности ниже.
- REPL : неявно печатает возвращаемое значение любого выражения
util.inspect() с синтаксической раскраской ;
то есть, просто набрав имя переменной и нажав Enter, вы увидите проверенную версию ее значения; например:
o = { one: 1, two: 'deux', foo: function(){} } // The REPL echoes the object definition with syntax coloring.
util.inspect()автоматически довольно-принты объект и массив представлений , но производит многострочный вывод только при необходимости .
Поведение симпатичной печати может контролироваться compactсвойством в необязательном optionsаргументе; безоговорочноfalse использует многострочный вывод , а вообще отключает симпатичную печать; он также может быть установлен на число (по умолчанию ) для управления условным многострочным поведением - см. документацию .true3
По умолчанию, вывод выводится около 60 символов , Шрей
, независимо от того, отправляется ли вывод в файл или на терминал. На практике, поскольку разрывы строк происходят только на границах свойств , вы часто будете иметь более короткие строки, но они также могут быть более длинными (например, с длинными значениями свойств).
В v6.3.0 + вы можете использовать breakLengthопцию, чтобы переопределить ограничение в 60 символов; если вы установите его Infinity, все выводится в одной строке.
Если вы хотите больше контроля над симпатичной печатью, рассмотрите возможность использования JSON.stringify()с третьим аргументом , но обратите внимание на следующее:
- Сбой с объектами, которые имеют циклические ссылки , например,
moduleв глобальном контексте.
- Методы (функции) по замыслу НЕ будут включены.
- Вы не можете выбрать показ скрытых (не перечисляемых) свойств.
- Пример вызова:
JSON.stringify({ one: 1, two: 'deux', three: true}, undefined, 2); // creates a pretty-printed multiline JSON representation indented with 2 spaces
util.inspect()объект параметров (2-й аргумент):
Может быть передан необязательный объект параметров, который изменяет определенные аспекты форматированной строки; некоторые из поддерживаемых свойств:
См. Последние документы Node.js для текущего, полного списка.
showHidden
- если
true, то будут показаны также не перечисляемые свойства объекта [те, которые не отображаются при использовании for keys in objили Object.keys(obj)). Значения по умолчанию для false.
depth
- говорит инспектировать, сколько раз повторять при форматировании объекта. Это полезно для проверки больших сложных объектов. По умолчанию 2. Чтобы сделать его бесконечным, передайте
null.
colors
- если true, то вывод будет оформлен с помощью цветовых кодов ANSI. Значения по умолчанию для
false. Цвета настраиваются [… - см. Ссылку].
customInspect
- если
false, то пользовательские inspect()функции, определенные для проверяемых объектов, вызываться не будут. Значения по умолчанию для true.
util.format()заполнители строки формата (1-й аргумент)
Некоторые из поддерживаемых заполнителей:
См. Последние документы Node.js для текущего, полного списка.
%s - Струна.
%d - Число (как целое число, так и число с плавающей запятой).
%j - JSON.
%%- один знак процента («%»). Это не потребляет аргумента.