在node.js中输出完整的错误对象

Bri*_*ian 3 javascript linux command-line node.js

在许多地方都可以使用错误对象,例如当您捕获错误或执行exec时,子进程可以将错误对象传递回去。当您尝试记录该信息时,并不能全部记录出来。

我尝试了以下方法:

console.log(error);
console.log(error.stack);
console.log(util.inpect(error, true, null));
Run Code Online (Sandbox Code Playgroud)

所有这些选项似乎输出了一组不同的不完整数据。有没有一种方法可以确保我始终从显示的错误中获取所需的所有数据,还是我需要使用所有这三行(是否需要添加更多语句?)?

Ste*_* H. 5

您可以使用JSON将许多JavaScript对象转换为字符串:

console.log(JSON.stringify(error, ["message", "arguments", "type", "name"]));
Run Code Online (Sandbox Code Playgroud)

编辑:更新以在评论中反映@laggingreflex提出的观点...

  • 实际上,错误是JSON.stringify不适合使用的对象之一。这只会输出一个空对象“ {}”。[您必须手动为其指定属性才能使用`JSON.stringify(err,[“ message”,“ arguments”,“ type”,“ name”])`](http://stackoverflow.com/questions / 18391212 /无法通过使用json-stringify / 26199752#26199752进行错误的字符串化) (5认同)