目前我有一个使用Express的中间件,但我无法使用Express使用的相同格式启动错误,因为它是同步功能,所以像next(err)
这样的东西根本不起作用。
我可以使用throw
发送错误并且应用程序不会崩溃所以它很好,但是我无法设置一些参数,例如err.message
或err.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);
但是没有奏效。
如何向错误中间件发送异步错误但能够设置错误值?感谢。