将对象传递给节点错误 class returns 一个不可访问的对象

Passing object to node's Error class returns an unaccessible object

我正在 returning 一个 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-ing 它 return 是一个空对象 {}。 "accessing" 我的意思是尝试记录错误 f.e。使用 console.log(err);(以 [object Object] 结束)或 err.messageerr.Error,或 err['Error'],但这些是 undefined.

我正在通读 Node's Error class docs,似乎可以传递对象。我错了吗?我应该 return 一个简单的定制对象而不是 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
       });
    }

因为我只是想更多地使用 Node 提供的功能并坚持一些广泛使用的约定,而不是 "my own way"。

您可以做的是简单地创建一个 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);