最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Express中的中间件

运维笔记admin9浏览0评论

Express中的中间件

Express中的中间件

如何在router(/ test)方法中捕获中间件函数中引发的错误

app.use(function(err, req, res, next) {    
    throw new Error('test');
  next("its failing")    
})


app.get('/test',function(req,res,error){


  res.send({ message: error.message });

})
回答如下:

您可以使用res.locals对象将变量从中间件传递到路由处理程序。如果传递错误对象,则可以在路由处理程序中进行检查。

app.use(function(req, res, next) {
    try {
        throw new Error('test error');
    } catch (err) {
        res.locals.Error = err;
    }   
    next(); 
})

app.get('/test', function(req,res,error){
    if (res.locals.Error) {
        res.status(500).json({ message: res.locals.Error.message})
    } else {
        res.send("OK");
    }
})

注意:您还可以将错误直接传递给next()函数。如果执行此操作,Express将跳过所有剩余的处理程序。参见Express error handling

例如:

app.use(function(req, res, next) {
    try {
        throw new Error('test error');
    } catch (err) {
        next(err);
    }   
})

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论