排除节点中的第一行错误堆栈? /自定义错误types在节点?

有没有办法使用JavaScript工厂创build一个Error对象,而不包括工厂在堆栈中的行?

例如,这个:

 if (!member) { return next(errs.init('Invalid email address.', errs.UNAUTHORIZED)); } 

产生这个:

 Error: Invalid email address. at Object.init (/.../bin/utils/errors.util.js:21:16) at Query.<anonymous> (/.../routes/auth/auth.routes.js:37:30) at /.../node_modules/kareem/index.js:177:19 at /.../node_modules/kareem/index.js:109:16 at nextTickCallbackWith0Args (node.js:419:9) 

堆栈的第一行实际上是工厂内的一行。 实际的问题从堆栈的第二行开始。

我正在使用WebStorm,并且控制台窗口只显示堆栈的第一行。 您必须滚动才能到达额外的行。

能够通过覆盖自定义错误中的上下文来使其在Node中工作:

 function ApiError (message, status, context) { this.name = 'ApiError'; this.message = message || ''; this.status = status || 500; Error.captureStackTrace(this, ( context || ApiError )); } require('util').inherits(ApiError, Error); function init (message, status) { return (new ApiError(message, status, init)); } module.exports = { init : init, ApiError : ApiError, BAD_REQUEST : 400, UNAUTHORIZED : 401, FORBIDDEN : 403, NOT_FOUND : 404, CONFLICT : 409 }; 

这允许:

 return next(errs.init('Invalid email address.', errs.UNAUTHORIZED)); 

… 要么 …

 return next(new errs.ApiError('Invalid email address.', errs.UNAUTHORIZED));