让 console.log 与复杂对象良好兼容的技巧
console.log
在很多情况下都很有用(尽管如果您正在这样做的话,通常有更好的方法来调试)。
在浏览器中console.log
,对象可以很好地工作,您可以根据需要深入了解所有内容。但在 Node.js 中,当您查看嵌套对象的输出时,通常会看到以下内容:
$ console.log({a: {b: { c: {d: {}}}}})
{ a: { b: { c: [Object] } } }
d: {}
被替换为[Object]
。但是为什么呢?
这是因为命令行/终端缺乏良好的用户界面来支持向下钻取,所以 Node 会尝试打印最多三层深度的内容。超过三层之后,它只会打印[Object]
。
这是由节点“util”模块中的变量控制的depth
,该变量默认为2
。您可以在此处自行设置:
require('util').inspect.defaultOptions.depth = 0; // top level only, e.g.:
// { a: [Object] }
require('util').inspect.defaultOptions.depth = null; // print everything, e.g.:
// {
// a: { b: { c: { d: {} } } }
// }
修改底层变量并非好主意,因为它以后可能会带来麻烦。所以更简洁的方法是将 JSON 对象转换为 astring
并记录下来。我们可以使用 Node 的内置JSON
类和stringify
方法:
complexObject = {a: {b: { c: {d: {}}}}}
console.log(JSON.stringify(complexObject, null, 2))
// {
// "a": {
// "b": {
// "c": {
// "d": {}
// }
// }
// }
// }
请注意,的第三个参数JSON.stringify
Number2
控制缩进的空格数,第二个参数可用于过滤或调整显示的对象和属性。
现在您可以真正看到那些深层物体中有什么。
鏂囩珷鏉ユ簮锛�https://dev.to/ehlo_250/the-trick-to-making-consolelog-play-nice-with-complex-objects-gma