如何 console.log 大对象? [复制]

Posted

技术标签:

【中文标题】如何 console.log 大对象? [复制]【英文标题】:How to console.log large object? [duplicate] 【发布时间】:2015-03-25 03:40:57 【问题描述】:

我正在尝试查看对象包含的内容

使用console.log(obj),控制台从线条中截断,我看不到整个结构。

然后我尝试将其写入文件

fs.writeFile('test', JSON.stringify(obj));

但是我得到一些关于循环引用的错误。

还有其他方法可以查看对象吗?该对象是来自 nodejs websocket 模块的“连接”。文档很差,我似乎找不到保存 IP 地址的属性:(

【问题讨论】:

只是一个建议,放置一个断点并从浏览器中检查以查看该对象的内容。 但节点的东西在 linux 服务器上运行。我只能向浏览器发送文本。但如您所见,我无法将其转换为 json ***.com/questions/10729276/… 【参考方案1】:
fs.writeFile('test', JSON.stringify(obj));

但我收到一些关于循环引用的错误。

这就是 JSON 的情况。 JSON 也会忽略函数、正则表达式、日期等。

您可以使用util.inspect,这是Node 的console.log() 在内部使用来获取整个对象,然后可以将其写入文件:

var util = require('util');
fs.writeFileSync('test.txt', util.inspect(obj));

如果你想要无限的深度和隐藏的属性:

util.inspect(obj,  showHidden: true, depth: null )

【讨论】:

唯一有效的答案。交易【参考方案2】:

我以前从未使用过console.dir,这很可能是正确的方法。然而,我一直在做的只是将我想要查看的内容分配给一个全局变量,然后直接在控制台中使用它。

类似这样的:

var x;
function xyz()
    // Code
    x = obj;

然后,直接在控制台中,如果您键入 x,在 xyz 运行后,您的对象就在那里,并且可以使用它的副本,包括查看所有属性和修改它的能力。

【讨论】:

【参考方案3】:

我相信你可以使用dir方法

    console.dir(obj)

不客气;)

【讨论】:

【参考方案4】:

使用 dir 方法。

console.dir(obj)

【讨论】:

打印同样的东西。我认为这仅适用于浏览器? 此方法按原样显示对象的内容。您可以浏览整个对象。你说的“切割”是什么意思? 终端的东西只显示几百行,其余的被截掉 哇,太棒了,谢谢。我认为大多数人在浏览器中使用 javascript 有趣的是,console.dir 工作的 50% 的人没有工作。对我来说,console.dir 输出与console.log 完全相同。它夹住对象并将其打印为文本。我想让它们折叠/展开格式

以上是关于如何 console.log 大对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

妙用$.extend

如何console.log多个对象?

如何在 Node.js console.log() 中获取完整对象,而不是“[Object]”?

我可以预先声明用于解构对象分配的变量吗? [复制]

ES6对象扩展——扩展运算符

数组和对象的复制