Javascript 如何在Node.js';s console.log(),而不是';[对象]';?

Javascript 如何在Node.js';s console.log(),而不是';[对象]';?,javascript,node.js,debugging,console.log,Javascript,Node.js,Debugging,Console.log,使用console.log()进行调试时,如何获取完整对象 const myObject = { "a":"a", "b":{ "c":"c", "d":{ "e":"e", "f":{ "g":"g", "h":{ "i":"i" } } } } }; console.log(m

使用
console.log()
进行调试时,如何获取完整对象

const myObject = {
   "a":"a",
   "b":{
      "c":"c",
      "d":{
         "e":"e",
         "f":{
            "g":"g",
            "h":{
               "i":"i"
            }
         }
      }
   }
};    
console.log(myObject);
产出:

{ a: 'a', b: { c: 'c', d: { e: 'e', f: [Object] } } }

但是我还想查看属性
f
的内容,您需要使用
util.inspect()

输出

{ a: 'a',  b: { c: 'c', d: { e: 'e', f: { g: 'g', h: { i: 'i' } } } } }

请参阅。

您需要使用
util.inspect()

输出

{ a: 'a',  b: { c: 'c', d: { e: 'e', f: { g: 'g', h: { i: 'i' } } } } }

请参阅。

您可以使用
JSON.stringify
,并获得一些很好的缩进以及可能更容易记住的语法

console.log(JSON.stringify(myObject, null, 4));

第三个参数设置缩进级别,因此可以根据需要调整缩进级别

如有需要,请在此提供更多详细信息:


您可以使用
JSON.stringify
,并获得一些很好的缩进以及可能更容易记住的语法

console.log(JSON.stringify(myObject, null, 4));

第三个参数设置缩进级别,因此可以根据需要调整缩进级别

如有需要,请在此提供更多详细信息:


另一个简单的方法是将其转换为json

console.log('connection : %j', myObject);

另一个简单的方法是将其转换为json

console.log('connection : %j', myObject);

也许您只需要
console.dir

在obj上使用util.inspect并将结果字符串打印到标准输出


如果您需要更多控制,请使用util选项。

也许
控制台。dir
就是您所需要的全部

在obj上使用util.inspect并将结果字符串打印到标准输出

如果需要更多控制,请使用util选项。

(至少)Node.js
v0.10.33
(稳定)/
v0.11.14
(不稳定)中的许多有用答案的汇编,可能通过(至少)
v7.7.4
(此答案最新更新的当前版本)。向他表示感谢

tl;dr

要获得问题中示例的所需输出,请使用:

为什么不
util.inspect()
?因为它已经是诊断输出的核心:
console.log()
console.dir()
以及Node.js REPL隐式地使用
util.inspect()。通常不需要
要求('util')
并直接调用
util.inspect()

详情如下


  • (及其别名为:):

    • 如果第一个参数不是格式字符串:将自动应用于每个参数:
      • o={one:1,two'deux',foo:function(){};log(o[1,2,3])/->'{1:1,2:'deux',foo:[Function]}[1,2,3]'
      • 请注意,在这种情况下,无法通过
        util.inspect()传递选项,这意味着有两个显著的限制:
        
        • 输出的结构深度限制为2个级别(默认值)。
          • 由于无法使用
            console.log()
            ,因此必须改用
            console.dir()
            console.dir(myObject,{depth:null}
            以无限深度打印;请参见下文
        • 无法启用语法着色
    • 如果第一个参数是格式字符串(见下文):用于根据格式字符串打印其余参数(见下文);例如:
      • o={one:1,two:'deux',foo:function(){};console.log('o作为JSON:%j',o)/->'o作为JSON:{“one”:1,two:“deux”}'
      • 注:
        • 没有用于表示对象的占位符
          util.inspect()
          -style
        • %j
          生成的JSON打印得不好
  • :

    • 只接受1个参数进行检查,并且始终适用–本质上是
      util.inspect()
      的包装,默认情况下没有选项;例如:
      • o={one:1,two'deux',foo:function(){};console.dir(o);//在这种情况下,实际上与console.log(o)相同。
    • Node.js v0.11.14+:可选的第二个参数指定
      util.inspect()
      选项–请参见下文;例如:
      • console.dir({one:1,two'deux'},{colors:true});//节点0.11+:使用语法着色打印对象表示。
  • REPL使用语法着色的
    util.inspect()
    隐式打印任何表达式的返回值
    i、 例如,只需键入一个变量的名称并按Enter键即可打印其值的检查版本;例如:
    • o={one:1,two:'deux',foo:function(){}//REPL使用语法着色回显对象定义。
自动漂亮地打印对象和数组表示形式,但仅在需要时生成多行输出

  • 漂亮打印行为可以通过可选的
    选项
    参数中的
    压缩
    属性来控制;
    无条件使用多行输出,而
    完全禁用漂亮打印;它也可以设置为一个数字(默认值为
    3
    )要控制条件多行行为,请参见

  • 默认情况下,输出是包装的, ,而不管输出是发送到文件还是终端。实际上,由于换行仅发生在属性边界处,因此通常会以较短的行结束,但也可能较长(例如,属性值较长)

  • 在v6.3.0+中,您可以使用
    breakLength
    选项覆盖60个字符的限制;如果将其设置为
    无穷大
    ,则所有内容都在一行上输出

<强>如果您希望对漂亮的打印进行更多的控制,请考虑使用第三个参数>,但请注意以下内容:

  • 对于具有循环引用的对象(例如全局上下文中的
    模块
    )失败
  • M
    var myObject = {
       "a":"a",
       "b":{
          "c":"c",
          "d":{
             "e":"e",
             "f":{
                "g":"g",
                "h":{
                   "i":"i"
                }
             }
          }
       }
    };
    myObject.inspect = function(){ return JSON.stringify( this, null, ' ' ); }
    
    const util = require('util')
    
    var myObject = {
      /* nested properties not shown */
    }
    
    myObject[util.inspect.custom] = function(){ return JSON.stringify( this, null, 4 ); }
    
    
    console.log(util.inspect(myObject))
    
    console.dir(myObject,{depth:null})
    
    console.log(JSON.stringify(myObject, null, 3));
    
    require("util").inspect.defaultOptions.depth = null;
    console.log(myObject);
    
    node.exe --inspect www.js
    
    const debug = require('debug');
    debug("%O", myObject);
    
    // more compact, and colour can be applied (better for process managers logging)
    console.dir(queryArgs, { depth: null, colors: true });
    
    // get a clear list of actual values
    console.log(JSON.stringify(queryArgs, undefined, 2));
    
    let myVar = {a: {b: {c: 1}}};
    console.log(JSON.stringify( myVar, null, 4 ))
    
    console.log(util.inspect(value, { maxArrayLength: Infinity }));