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

Javascript NodeJS:之后如何添加路由(在中间件之后),javascript,node.js,express,middleware,Javascript,Node.js,Express,Middleware,我目前正在使用node.js进行一个项目。 我在一个具体问题上结巴了。添加所有路由后 使用express(app.get(“…”,func))我最终得到了一个中间件 捕获所有请求并重定向到404页 现在的问题是,当我在服务器运行期间添加路由时,中间件 我很关心这条新路线 例如: app.get("/home", function(_, res) { res.send("home"); }) app.get("/faq", function(_, res) { res.send(

我目前正在使用node.js进行一个项目。 我在一个具体问题上结巴了。添加所有路由后 使用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很陌生。

虽然动态添加路由听起来不是个好主意,但这里有一个解决方法:在404处理程序之前添加一个(空的)
路由器
实例,并将新路由添加到该路由器,而不是添加到
应用程序

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");
})

从您的措辞来看,您可能没有尝试重新启动node/express进程?您正在添加的路由很可能是在404处理程序之后添加的,因此它永远不会到达,因为到达404处理程序的任何内容都会收到404。您的app.use代码将发送404响应,因此,之后的所有代码都不会被执行。只需在代码末尾留下app.get(“/team”,function(u,res){res.send(“team”);}),一切都会好起来的。我需要动态添加路由,因为有一个lobby系统(例如:/lobby/xsfr)。多谢各位@reByte听起来像是您实际需要的是接受参数的
/lobble
路由,而不是其他路由。例如,
/lobb/:id
是的,我同意@KevinB的观点。