(En azından) Node.js'den v0.10.33
(kararlı) / v0.11.14
(kararsız) muhtemelen (en azından) v7.7.4
(bu cevaba yönelik en son güncellemeden itibaren geçerli olan sürüm ) üzerinden birçok yararlı cevabın bir derlemesi . Onun yardımı için Rory O'Kane için şapka ucu .
tl; Dr.
Sorudaki örnek için istenen çıktıyı almak için şunu kullanın console.dir()
:
console.dir(myObject, { depth: null }); // `depth: null` ensures unlimited recursion
Neden olmasın util.inspect()
? Zaten teşhis çıktısının merkezinde yer alıyor: console.log()
ve console.dir()
Node.js REPL de dolaylı olarak kullanıyorutil.inspect()
. Genellikle doğrudan aramak ve aramak gerekli değildirrequire('util')
util.inspect()
.
Detaylar aşağıda.
- REPL : örtülü olan bir ifadenin bir dönüş değeri yazdırır
util.inspect()
ile sözdizimi renklendirme ;
yani, sadece bir değişkenin adını yazmak ve Enter tuşuna basmak değerinin denetlenen bir versiyonunu basacaktır; Örneğin:
o = { one: 1, two: 'deux', foo: function(){} } // The REPL echoes the object definition with syntax coloring.
util.inspect()
nesne ve dizi temsillerini otomatik olarak güzel yazdırır , ancak yalnızca gerektiğinde çok satırlı çıktı üretir .
Güzel yazdırma davranışı compact
, isteğe bağlı options
bağımsız değişkende özellik tarafından denetlenebilir ; koşulsuz olarakfalse
çok satırlı çıktı kullanırken , güzel yazdırmayı tamamen devre dışı bırakır; koşullu çok satırlı davranışı kontrol etmek için bir sayıya (varsayılan değer ) da ayarlanabilir - bkz.true
3
dokümanlara .
Varsayılan olarak, çıktı
bir dosyaya veya terminale gönderilip gönderilmediğine bakılmaksızın , Shrey sayesinde çıktı yaklaşık 60 karakterle sarılır . Uygulamada, satır sonları yalnızca mülk sınırlarında gerçekleştiği için , genellikle daha kısa satırlarla sonuçlanırsınız, ancak bunlar daha uzun da olabilir (örneğin, uzun özellik değerleriyle).
V6.3.0 + ' breakLength
da 60 karakter sınırını geçersiz kılma seçeneğini kullanabilirsiniz ; olarak ayarlarsanız Infinity
, her şey tek bir satırda çıkar.
Güzel baskı üzerinde daha fazla kontrol istiyorsanız, JSON.stringify()
3. bir argümanla kullanmayı düşünün , ancak aşağıdakilere dikkat edin:
- Genel bağlamda olduğu gibi döngüsel başvuruları olan nesnelerde başarısız olur
module
.
- Yöntemlere (fonksiyonlara) tasarım dahil DEĞİLDİR.
- Gizli (numaralandırılamayan) özellikleri göstermeyi seçemezsiniz.
- Örnek çağrı:
JSON.stringify({ one: 1, two: 'deux', three: true}, undefined, 2); // creates a pretty-printed multiline JSON representation indented with 2 spaces
util.inspect()
seçenekler nesnesi (2. bağımsız değişken):
Biçimlendirilmiş dizenin belirli yönlerini değiştiren isteğe bağlı bir seçenekler nesnesi geçirilebilir; Bazı desteklenen özelliklerin şunlardır:
Mevcut tam liste için en yeni Node.js belgelerine bakın .
showHidden
- eğer
true
, o zaman nesnenin olmayan enumerable özellikleri [kullandığınızda göstermek için değil belirtilenler for keys in obj
veya Object.keys(obj)
] çok gösterilecektir. Varsayılan olarak false
.
depth
- nesneyi biçimlendirirken kaç kez tekrarlanacağını denetler. Bu, büyük karmaşık nesneleri incelemek için yararlıdır. Varsayılan değer 2'dir
null
. Süresiz olarak tekrarlama yapmak için geçin .
colors
- true olursa, çıktı ANSI renk kodlarıyla biçimlendirilir. Varsayılan olarak
false
. Renkler özelleştirilebilir [… - bağlantıya bakın].
customInspect
- eğer
false
, inspect()
incelenen nesneler üzerinde tanımlanan özel fonksiyonlar çağrılmaz. Varsayılan olarak true
.
util.format()
biçim dizesi yer tutucuları (1. bağımsız değişken)
Biraz desteklenen tutucuların şunlardır:
Mevcut tam liste için en yeni Node.js belgelerine bakın .
%s
- Dize.
%d
- Sayı (hem tamsayı hem de kayan sayı).
%j
- JSON.
%%
- yüzde işareti ('%'). Bu bir argüman tüketmez.