当我记录到控制台时,我对Node.js Error
对象感到很困惑...
举个例子,我有这个代码:
request(
options,
function (err, response, contents) {
if (err) {
console.error('error in request:', err);
}
success(contents);
},
);
有时它出错ECONNRESET
错误......到目前为止一直很好。
console.error()
(或console.log()
)格式为:
[Error: socket hang up] code: 'ECONNRESET'
我无法理解打印的格式:为什么"错误:socket挂断"是方括号吗?它是一个对象吗? 一劳永逸:我如何检查错误对象,以便查看所有单独的属性?
更新 在 @chriskelly 回答之后,在调试模式下运行节点后,我得到:
debug> repl
Press Ctrl + C to leave debug repl
> typeof err
'object'
> Object.keys(err)
[]
> console.dir(err)
< [Error: socket hang up] code: 'ECONNRESET'
我一直不理解err
对象:没有键,但是有内容......: - (
答案 0 :(得分:2)
请求返回的错误类型是Error对象: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
其中一个属性是名为properties的数组,第二个条目包含您在方括号中看到的文本。 Javascript可以指定不同程度的可见性,并且一些自定义对象(例如Error)设置了以下属性:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Enumerability_and_ownership_of_properties
尝试使用debug
开关运行节点,并使用debugger
关键字创建断点。即修改您的代码如下:
if (err) {
console.error(err)
debugger;
}
然后按如下方式运行节点:
node debug server.js
当它停在上面一行时,键入repl
(代表读取,评估,打印,循环)以检查变量
例如输入
Object.keys(err)
检查错误的属性(假设它是一个对象)。
Fyi,对于图形替换,您可以尝试使用 node-inspector 进行安装:
npm install -g node-inspector
然后用
运行node-debug server.js
您的代码将在Chrome中打开,并在前端调试过程中为您提供相同的工具。
HTH。
答案 1 :(得分:1)
您也可以使用:
console.dir(err);
https://developer.mozilla.org/en-US/docs/Web/API/Console/dir
<强>更新强>
这是关于错误对象的文档:
https://nodejs.org/api/errors.html
在方括号中,错误显示类型和消息。 Type是错误类,message是传递给错误构造函数的参数。
var e = new TypeError("Bla Bla Bla");
console.log(e);
给予:[TypeError: Bla Bla Bla]