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

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

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

然后我尝试将其写入文件

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

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

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

【问题讨论】:

  • 只是一个建议,放置一个断点并从浏览器中检查以查看该对象的内容。
  • 但节点的东西在 linux 服务器上运行。我只能向浏览器发送文本。但如您所见,我无法将其转换为 json

标签: javascript node.js object console.log


【解决方案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 完全相同。它夹住对象并将其打印为文本。我想让它们折叠/展开格式
      猜你喜欢
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      相关资源
      最近更新 更多