Eine Zusammenstellung der vielen nützlichen Antworten von (mindestens) Node.js v0.10.33
(stabil) / v0.11.14
(instabil) vermutlich bis (mindestens) v7.7.4
(die aktuelle Version zum letzten Update dieser Antwort). Tipp des Hutes an Rory O'Kane für seine Hilfe.
tl; dr
Verwenden Sie console.dir()
: Um die gewünschte Ausgabe für das Beispiel in der Frage zu erhalten :
console.dir(myObject, { depth: null }); // `depth: null` ensures unlimited recursion
Warum nicht util.inspect()
? Weil es bereits das Herzstück der Diagnoseausgabe ist: console.log()
und console.dir()
ebenso wie die implizite Verwendung vonutil.inspect()
Node.js REPL . Es ist in der Regel nicht erforderlich,require('util')
util.inspect()
direkt anzurufen .
Details unten.
- Die REPL : gibt implizit den Rückgabewert eines Ausdrucks
util.inspect()
mit Syntaxfarbe aus .
Wenn Sie also nur den Namen einer Variablen eingeben und die Eingabetaste drücken, wird eine überprüfte Version ihres Werts gedruckt. z.B:
o = { one: 1, two: 'deux', foo: function(){} } // The REPL echoes the object definition with syntax coloring.
util.inspect()
druckt Objekt- und Array- Darstellungen automatisch hübsch aus , erzeugt jedoch nur bei Bedarf eine mehrzeilige Ausgabe .
Das hübsche Druckverhalten kann durch die compact
Eigenschaft im optionalen options
Argument gesteuert werden . false
verwendet die mehrzeilige Ausgabe bedingungslos , während true
das hübsche Drucken insgesamt deaktiviert wird. Es kann auch eine Zahl festgelegt werden (die Standardeinstellung ist 3
), um das bedingte mehrzeilige Verhalten zu steuern - siehe Dokumente .
Standardmäßig wird die Ausgabe dank Shrey mit etwa 60 Zeichen umbrochen
, unabhängig davon, ob die Ausgabe an eine Datei oder ein Terminal gesendet wird. Da Zeilenumbrüche in der Praxis nur an Eigenschaftsgrenzen auftreten , werden häufig kürzere Zeilen angezeigt, die jedoch auch länger sein können (z. B. bei langen Eigenschaftswerten).
In Version 6.3.0 + können Sie die breakLength
Option verwenden, um die Beschränkung auf 60 Zeichen zu überschreiben. Wenn Sie es einstellen, Infinity
wird alles in einer einzigen Zeile ausgegeben .
Wenn Sie mehr Kontrolle über das hübsche Drucken wünschen, sollten Sie JSON.stringify()
ein drittes Argument verwenden . Beachten Sie jedoch Folgendes:
- Fails mit Objekten , die haben zirkuläre Referenzen , wie
module
im globalen Kontext.
- Methoden (Funktionen) werden von Natur aus NICHT berücksichtigt.
- Sie können sich nicht dafür entscheiden, versteckte (nicht aufzählbare) Eigenschaften anzuzeigen.
- Beispielaufruf:
JSON.stringify({ one: 1, two: 'deux', three: true}, undefined, 2); // creates a pretty-printed multiline JSON representation indented with 2 spaces
util.inspect()
Optionsobjekt (2. Argument):
Es kann ein optionales Optionsobjekt übergeben werden, das bestimmte Aspekte der formatierten Zeichenfolge ändert. Einige der unterstützten Eigenschaften sind:
Die aktuelle vollständige Liste finden Sie in den neuesten Node.js-Dokumenten .
showHidden
- Wenn
true
, werden auch die nicht aufzählbaren Eigenschaften des Objekts angezeigt [diejenigen, die bei Verwendung von for keys in obj
oder Object.keys(obj)
nicht angezeigt werden sollen]. Der Standardwert ist false
.
depth
- weist an, zu überprüfen, wie oft beim Formatieren des Objekts eine Rekursion durchgeführt werden soll. Dies ist nützlich, um große komplizierte Objekte zu untersuchen. Der Standardwert ist 2. Um eine unbegrenzte Wiederholung zu erreichen, übergeben Sie
null
.
colors
- Wenn true, wird die Ausgabe mit ANSI-Farbcodes gestaltet. Der Standardwert ist
false
. Farben sind anpassbar [… - siehe Link].
customInspect
- Wenn
false
, werden benutzerdefinierte inspect()
Funktionen, die für die zu inspizierenden Objekte definiert wurden, nicht aufgerufen. Der Standardwert ist true
.
util.format()
Platzhalter für Formatzeichenfolgen (1. Argument)
Einige der unterstützten Platzhalter sind:
Die aktuelle vollständige Liste finden Sie in den neuesten Node.js-Dokumenten .
%s
- String.
%d
- Zahl (sowohl Ganzzahl als auch Gleitkomma).
%j
- JSON.
%%
- einzelnes Prozentzeichen ('%'). Dies verbraucht kein Argument.