将对象传递给节点的Error类会返回一个无法访问的对象

Mil*_*iez 7 v8 node.js

我正在返回一个Error对象,我传递一个对象(而不是一个简单的消息):

if (err) {
   return myCallback(new Error({
      error_code: 'sample_machine_readable_code', 
      error_message: 'There is an error in the response from the service.', 
      error: err
   }));
}
Run Code Online (Sandbox Code Playgroud)

控制台的结果是[Error: [object Object]].我尝试访问它的属性作为数组的属性和作为对象,但总是最终undefined.JSON.stringify- 它返回一个空对象{}.通过"访问"我的意思是尝试记录错误,fe console.log(err);(最终[object Object])或err.messageerr.Error,或者err['Error'],但是,这些是undefined.

我正在阅读Node的Error类文档,似乎可以传递对象.我错了吗?我应该只返回一个简单的自定义构造对象而不是new Error?像那样:

if (err) {
       return myCallback({
          error_code: 'sample_machine_readable_code', 
          error_message: 'There is an error in the response from the service.', 
          error: err
       });
    }
Run Code Online (Sandbox Code Playgroud)

Cuz我只想使用Node提供的更多内容,并坚持使用一些广泛使用的约定而不是"我自己的方式".

Vse*_*nin 16

您可以做的只是创建一个实例Error并为其分配自定义属性,如下所示:

var error = new Error("There is an error in the response from the service"); 
error.error = err; 
error.error_code = "sample_machine_readable_code"

return myCallback(error);
Run Code Online (Sandbox Code Playgroud)