澄清Javascript对象的console.log

时间:2016-06-26 18:09:34

标签: node.js formidable

这似乎很基本,但我遗漏了一些东西。我正在使用node.js formidable模块,我在控制台上记录错误,如下所示:

uploadProc.on('error', function(err) {
   console.log("Form upload error...");
   console.log(typeof err);
   console.log(err);
   console.log(err[0]);
   console.log(err['Error']);
   console.log(JSON.stringify(err);
});

输出结果为:

object
[Error: Request aborted]
undefined
undefined
{}

正如我所看到的,它既不是数组也不是具有属性Error的常规对象。如果我想对它进行字符串化,无论它是什么类型,我该怎么做?可能是字符串开头。但如果是这种情况,typeof会返回" string。"我在Mozilla处查看此信息。似乎属于"任何其他对象"类别。有人可以解释控制台记录的对象的类型是[错误:请求已中止]吗?

1 个答案:

答案 0 :(得分:1)

这是Error object

> new Error('hello world') instanceof Error
true

它有一个.toString()方法,您可以使用它来对其进行字符串化:

> console.log(new Error('hello world').toString())
Error: hello world

或者,如果要输出堆栈跟踪:

> console.log(new Error('hello world').stack)
Error: hello world
    at repl:1:13
    at REPLServer.defaultEval (repl.js:262:27)
    at bound (domain.js:287:14)
    at REPLServer.runBound [as eval] (domain.js:300:12)
    at REPLServer.<anonymous> (repl.js:431:12)
    at emitOne (events.js:82:20)
    at REPLServer.emit (events.js:169:7)
    at REPLServer.Interface._onLine (readline.js:211:10)
    at REPLServer.Interface._line (readline.js:550:8)
    at REPLServer.Interface._ttyWrite (readline.js:827:14)