/

如何在Node中記錄物件

如何在Node中記錄物件

在瀏覽器中運行的JavaScript程式中,當您輸入console.log()時,會在瀏覽器控制台中產生一條輸出:

點擊箭頭後,輸出會展開,您可以清楚地看到物件的屬性:

在Node中,情況是一樣的。

當我們將物件輸出到控制台時,並沒有像在瀏覽器中那樣的便利。在手動運行Node程式時,或者在日誌文件中,輸出會是物件的字串表示。

一切都很好,直到達到某個層次的巢狀結構。在兩個層次的巢狀結構後,Node就放棄並以[Object]作為佔位符輸出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const obj = {
name: 'Flavio',
age: 35,
person1: {
name: 'Tony',
age: 50,
person2: {
name: 'Albert',
age: 21,
person3: {
name: 'Peter',
age: 23
}
}
}
}
console.log(obj)

{
name: 'Flavio',
age: 35,
person1: {
name: 'Tony',
age: 50,
person2: {
name: 'Albert',
age: 21,
person3: [Object]
}
}
}

如何輸出完整的物件?

保持輸出格式的最佳方法是使用:

1
console.log(JSON.stringify(obj, null, 2))

其中的2是用於縮排的空格數。

另一個選擇是使用:

1
2
require('util').inspect.defaultOptions.depth = null
console.log(obj)

但問題是,二級巢狀結構之後的嵌套物件會被攤平。對於複雜的物件可能會造成問題。

tags: [“Node.js”, “logging”]