Javascript 排除节点中错误堆栈的第一行?/节点中的自定义错误类型?
是否有任何方法可以使用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
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在您想向错误中添加额外内容(状态代码等)时不可用。