【问题标题】:Output is truncated in node.js output in Sublime TextSublime Text 中的 node.js 输出中的输出被截断
【发布时间】:2014-11-19 00:59:03
【问题描述】:

为了尽可能简洁,我试图弄清楚是否有一种方法可以让控制台使用 console.log() 显示对象的全部内容。我正在使用通过管道传输到 Sublime Text 3 中的控制台的 node.js。我运行代码本身没有问题,只是显示输出。

我有一个这样创建的链表对象:

{ value: 1, next: { value: 2, next: { value: 3, next: { value: 4, next: { value: 5, next: null}}}}}

当它输出到控制台时,它看起来类似于以下内容:

{ value: 1, next: 
    { value: 2, next: { value: 3, next: [Object]}}

简而言之,整个对象是不可见的,也不能以任何方式展开。有什么办法可以强制控制台更详细并显示整个对象?

【问题讨论】:

    标签: javascript node.js console sublimetext3


    【解决方案1】:

    您可以做的一种方法是将 JSON 转换为字符串。

    因此,如果您的文件内容是在变量 x 中获取的。你可以这样做:

    console.log(JSON.stringify(x));
    

    这会将您的 JSON 数据转换为可以轻松打印到控制台的字符串。

    这是另一种解决方法:

    console.log(require('util').inspect(x, {showHidden: false, depth: null}));
    

    问题是 console.log 是用来打印字符串的,而不是对象。因此,它会自动尝试将所有内容转换为字符串,并且在此过程中(因为自动转换不是将对象转换为字符串的正确方法)一些数据会丢失。

    您可以使用第二种解决方法,但我强烈建议您坚持第一种,因为它是更好的方法。

    【讨论】:

    • 这是一个可以接受的解决方法,但我必须对所有内容进行字符串化,使其更难阅读。对象输出的这种限制是在 node.js 中配置的吗?
    • @Scott 我已经编辑了我的答案以掩盖你的顾虑。
    • 使用深度标志进行检查的调用是真正的解决方法。
    • 谢谢,我更喜欢第二种解决方法。我希望该节点默认能够执行此类操作,但这将适用于更长和更复杂的对象。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 2018-09-11
    相关资源
    最近更新 更多