无法在Express中以异步方式向错误中间件发送错误参数

时间:2016-04-19 10:00:46

标签: node.js express asynchronous error-handling

目前我有一个使用Express的中间件,但我无法使用Express使用的相同格式启动错误,因为它是同步功能,所以像next(err)这样的东西根本不起作用。

我可以使用throw发送错误并且应用程序不会崩溃所以它很好,但是我无法设置一些参数,例如err.messageerr.statusCode。这是代码工作:

function getScope(req, res, next){
    //req.scopesArray is an array of arrays: [ ['RESOURCE','.ACTION'] , ['patient','.create'] ]
    req.scopesArray.forEach(function(current,index,array){
        switch(req.scopesArray){
            case 'user': var hasPermissions = checkUserPermissions(permissionId,action); break;
        }                    
        if(!hasPermissions) throw new Error('Error with permissions');
    });
    next();
}

我意识到,事件没有调用next(err),错误中间件确实会执行。

我尝试过像:

var err = {}; err.message = 'test'; err.statusCode=404;
throw new Error(err);

但是没有奏效。

如何向错误中间件发送异步错误但能够设置错误值?感谢。

0 个答案:

没有答案