Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js中的错误类_Node.js - Fatal编程技术网

node.js中的错误类

node.js中的错误类,node.js,Node.js,显然,节点文档的控制台核心模块()中存在以下代码: console.error(new Error('Whoops, something bad happened')); // Prints: [Error: Whoops, something bad happened], to stderr 但是,当我运行test.js时,下面会显示哪些代码 var err = new Error('a'); console.error(err); 终端按如下方式打印消息: 错误:a 反对。(/Use

显然,节点文档的控制台核心模块()中存在以下代码:

console.error(new Error('Whoops, something bad happened'));
  // Prints: [Error: Whoops, something bad happened], to stderr
但是,当我运行test.js时,下面会显示哪些代码

var err = new Error('a');
console.error(err);
终端按如下方式打印消息:

错误:a 反对。(/Users/suoyong/Express)/连接数据库/错误:js:1:73) 在模块处编译(Module.js:556:32) 在Object.Module._extensions..js(Module.js:565:10) 在Module.load(Module.js:473:32) 在TryModule加载时(module.js:432:12) 在Function.Module.\u加载(Module.js:424:3) 位于Module.runMain(Module.js:590:10) 运行时(bootstrap_node.js:394:7) 启动时(bootstrap_node.js:149:9) 在bootstrap_node.js:509:3

如您所见,我的代码与节点文档相同,但结果不同。 请帮我回答这个小问题

这不是字面意义上的解释。无论如何,在最新的LTS和稳定版本中都没有。打印这样的错误实际上会打印错误对象的文本表示,在文档中称为
[error:Whoops,糟糕的事情发生了]
。以下文件进一步阐明了实际预期行为:

如果在第一个字符串中找不到格式化元素(例如%d),则对每个参数调用
util.inspect()
,并将结果字符串值串联起来

util.inspect()
一侧,此方法“返回主要用于调试的对象的字符串表示形式”。对于类型为
Error
的对象,这将生成一个包含错误消息和堆栈跟踪的字符串

> const txt = util.inspect(new Error("I'm on SO"))
undefined
> txt
'Error: I\'m on SO\n    at repl:1:26\n    at sigintHandlersWrap (vm.js:22:35)\n    at sigintHandlersWrap (vm.js:96:12)\n    at ContextifyScript.Script.runInThisContext (vm.js:21:12)\n    at REPLServer.defaultEval (repl.js:313:29)\n    at bound (domain.js:280:14)\n    at REPLServer.runBound [as eval] (domain.js:293:12)\n    at REPLServer.<anonymous> (repl.js:513:10)\n    at emitOne (events.js:101:20)\n    at REPLServer.emit (events.js:188:7)'
> console.log(txt)
Error: I'm on SO
    at repl:1:26
    at sigintHandlersWrap (vm.js:22:35)
    at sigintHandlersWrap (vm.js:96:12)
    at ContextifyScript.Script.runInThisContext (vm.js:21:12)
    at REPLServer.defaultEval (repl.js:313:29)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.<anonymous> (repl.js:513:10)
    at emitOne (events.js:101:20)
    at REPLServer.emit (events.js:188:7)
>const txt=util.inspect(新错误(“我是如此”))
未定义
>文本
'错误:我是如此\n在repl:1:26\n在sigintHandlersWrap(vm.js:22:35)\n在sigintHandlersWrap(vm.js:96:12)\n在ContextifyScript.Script.runinthiscoxt(vm.js:21:12)\n在REPLServer.defaultEval(repl.js:313:29)\n在bound(domain.js:280:14)\n在REPLServer.runBound[as eval](domain.js:293:12)\n在REPLServer。(repl.js:513:10)\n位于emitOne(events.js:101:20)\n位于REPLServer.emit(events.js:188:7)'
>console.log(txt)
错误:我是这样的
回复:1:26
在sigintHandlersWrap(vm.js:22:35)
在sigintHandlersWrap(vm.js:96:12)
在ContextifyScript.Script.runInThisContext(vm.js:21:12)
在REPLServer.defaultEval(repl.js:313:29)
绑定时(domain.js:280:14)
在REPLServer.runBound[as eval](domain.js:293:12)
在服务器上。(回复js:513:10)
在emitOne(events.js:101:20)
在REPLServer.emit上(events.js:188:7)

我猜这在节点v4和节点v6之间发生了变化

对于v4,输出如文件所示;对于v6,输出中包含堆栈跟踪,就像您看到的那样


您可以通过使用
console.error(err.toString())
来解决这个问题,这两个版本都会输出
error:a
(因此减去任何括号,但如果您确实需要这些括号,当然可以添加它们)。

您在哪里看到的?我在官方文档中找不到您声称的内容。@E_net4您可以Ctr+F find请在您的问题中包含该链接。中的文档显示了相同的内容。现在,很难猜测这是文档中没有更新的旧行为,还是只是解释错误对象将被打印到stderr的一种手段。@Sooyong没问题,你的问题很合理(也别忘了接受答案)。我想知道No.JS基金会的开发者是否知道这一点。
> const txt = util.inspect(new Error("I'm on SO"))
undefined
> txt
'Error: I\'m on SO\n    at repl:1:26\n    at sigintHandlersWrap (vm.js:22:35)\n    at sigintHandlersWrap (vm.js:96:12)\n    at ContextifyScript.Script.runInThisContext (vm.js:21:12)\n    at REPLServer.defaultEval (repl.js:313:29)\n    at bound (domain.js:280:14)\n    at REPLServer.runBound [as eval] (domain.js:293:12)\n    at REPLServer.<anonymous> (repl.js:513:10)\n    at emitOne (events.js:101:20)\n    at REPLServer.emit (events.js:188:7)'
> console.log(txt)
Error: I'm on SO
    at repl:1:26
    at sigintHandlersWrap (vm.js:22:35)
    at sigintHandlersWrap (vm.js:96:12)
    at ContextifyScript.Script.runInThisContext (vm.js:21:12)
    at REPLServer.defaultEval (repl.js:313:29)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.<anonymous> (repl.js:513:10)
    at emitOne (events.js:101:20)
    at REPLServer.emit (events.js:188:7)