Javascript 排除节点中错误堆栈的第一行?/节点中的自定义错误类型?

Javascript 排除节点中错误堆栈的第一行?/节点中的自定义错误类型?,javascript,node.js,Javascript,Node.js,是否有任何方法可以使用JavaScript工厂创建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 Q

是否有任何方法可以使用JavaScript工厂创建
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)
错误:无效的电子邮件地址。
在Object.init(/…/bin/utils/errors.util.js:21:16)
在询问时。(/…/routes/auth/auth.routes.js:37:30)
at/../node_modules/kareem/index.js:177:19
在/../node_modules/kareem/index.js:109:16
在下一个TTickCallbackwith0args(node.js:419:9)
堆栈的第一行实际上是工厂内部的一行。实际问题从堆栈的第二行开始


我正在使用WebStorm,控制台窗口只显示堆栈的第一行。您必须滚动到其他行。

通过在自定义错误中覆盖上下文,使其在节点中工作:

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));

在抛出错误之前捕获错误,并删除错误消息字符串中有问题的部分?这似乎比它的价值更麻烦-你不想仅仅为了让它在IDE中看起来更好而更改生产代码。从来没有说过我想更改它。只是寻找一种技术来显示实际错误的存在,而不是工厂。工厂在这里的价值是什么<代码>抛出新错误('derp')似乎足够快。@JoeAttardi在您想向错误中添加额外内容(状态代码等)时不可用。