是否排除节点中错误堆栈的第一行?/节点中的自定义错误类型
Exclude first line of error stack in Node? / Custom Error Type in Node?
是否有任何方法可以使用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)
堆栈的第一行实际上是工厂内部的一行。实际问题从堆栈的第二行开始。
我使用的是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));
相关文章:
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 节点分叉子进程并获取它's错误
- 是否排除节点中错误堆栈的第一行?/节点中的自定义错误类型
- Sinon Mocha节点错误处理
- 将节点.js更新为 0.12 标头错误
- 节点发布错误对象的第一个“属性”
- 尝试读取空节点时出现 XML JavaScript 错误
- 节点.js未捕获的异常类型错误:无法设置未定义的预处理 ''
- 节点.js 使用可写流写入文件时出现 EBADF 错误
- 解决节点中的“本地主机意外关闭连接”错误
- 创建节点时出现 Javascript DOM 错误
- 收到错误:无法在“节点”上执行“appendChild”:参数 1 的类型不是“节点”
- Bookshelf注册表插件和节点循环依赖性错误
- 在javascript中更改变量值时未发现节点错误
- Meteor:排队任务中出现异常:错误:无法执行'removeChild'在'节点':要
- 未捕获的类型错误:对象#<节点列表>没有方法'addEventListener'
- appendChild上的错误-试图在不存在节点的上下文中引用该节点
- JWT 未解码“JWT 格式错误” - 节点角度
- 解决 dojo 中的“类型错误:节点为空”错误
- 科尔多瓦生成错误:节点值未定义