(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ı optionsbağı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.true3 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 + ' breakLengthda 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 objveya 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.