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

时间:2016-02-19 10:01:22

标签: node.js v8

我正在返回一个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
   }));
}

控制台中的结果是[Error: [object Object]]。我尝试将其属性作为数组的属性和对象进行访问,但总是以undefined结束。 JSON.stringify - 它返回一个空对象{}。通过"访问"我的意思是尝试记录错误,例如。使用console.log(err);(最终位于[object Object])或err.messageerr.Errorerr['Error'],但这些是undefined

我正在阅读Node's Error class docs,似乎可以传递物品。我错了吗?我应该只返回一个简单的自定义构造对象而不是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
       });
    }

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

1 个答案:

答案 0 :(得分:12)

您可以做的只是创建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);