NodeJS:如何在之后添加路由(在中间件之后)

时间:2017-06-29 19:05:54

标签: javascript node.js express middleware

我目前正在使用node.js开展项目。 我坚持一个特定的问题。添加所有路线后 with express(app.get(" ..",func))我最终得到了一个中间件 捕获所有请求并重定向到404页。

现在的事情是,当我在服务器运行期间添加路由时,中间件 关心新路线。

示例:

app.get("/home", function(_, res) {
    res.send("home");
})

app.get("/faq", function(_, res) {
    res.send("faq");
})

app.use(function(_, res) {
    res.send("404");
});

// e.g. 10 min later..

app.get("/team", function(_, res) {
    res.send("team");
})

所以我可以访问/ home和/ faq但是在请求页面/团队10分钟后,我被重定向到404页面。

有人知道解决方案吗?我对nodejs很新..

1 个答案:

答案 0 :(得分:0)

尽管动态添加路由并不是一个好主意,但这里有一个解决方法:在404处理程序之前添加一个(空)Router实例,并将新路由添加到该路由器而不是app

let router = express.Router();
app.use(router);

app.use(function(_, res) {
    res.send("404");
});

// e.g. 10 min later..
router.get("/team", function(_, res) {
    res.send("team");
})