Express 4:处理所有错误

时间:2015-10-31 20:12:29

标签: node.js express

在对我的应用进行编码时,我在浏览器中输入网址时有时会遇到一些不幸,因此有时会收到错误消息:

Cannot GET /some/route

这是真的,因为路线可能没有定义。

但是由于这个应用程序计划进入制作阶段,我有点不想使用这个平面消息作为我的错误页面"。

查看Express 4文档,他们告诉我.use()一个带有4个参数的中间件。我做到了但是我仍然会遇到这个问题...

原来这个消息来自finalhandler模块,我的赌注是,这个中间件出现在我的错误捕获的4参数中间件之前。

这是一个基本的快速应用程序,我在尝试寻找解决方案时将它们放在一起:

var app = require("express")();
app.use("/yo", function(req, res, next){
    res.send("Yo!");
});
app.use(function(error, req, res, next){
    res.send("An error: "+error);
    console.log(error);
});
app.listen(10000);

访问/yo有效。但是,//derp会生成Cannot GET消息而不是我的小中间件。

那么,现在如何正确完成?

1 个答案:

答案 0 :(得分:2)

错误中间件仅用于实际错误,例如中间件或路由处理程序抛出异常或将错误传递给Array<Vector2> poly = new Array<Vector>();

如果要为与任何现有路由不匹配的请求提供路由处理程序,则只需在所有应用程序的路由/中间件之后添加中间件,如:

next()