关于express中间件的一些困惑 app.get(“/”,(请求、恢复、下一步)=>{ next(); }); app.get(“/admin)”,(请求、恢复、下一步)=>{ res.send(“管理页面”); }); app.listen(3000); console.log(“在端口3000上侦听”);

关于express中间件的一些困惑 app.get(“/”,(请求、恢复、下一步)=>{ next(); }); app.get(“/admin)”,(请求、恢复、下一步)=>{ res.send(“管理页面”); }); app.listen(3000); console.log(“在端口3000上侦听”);,express,Express,为什么它不调用下一个中间件/admin,并且如果您向服务器发送这样的请求,则会出现错误无法获取/: 得到/ 然后它将点击app.get(“/”,…)路由处理程序。如果将console.log(“got here”)放在路由处理程序中,您将看到它被记录。但是,然后调用next(),并且不发送任何http响应,因此路由将继续。您只有一个其他路由,并且该路由与/不匹配,因此,在Express中,您将使用默认的404处理程序 如果希望“/”路由处理程序发送响应,请修改它以执行此操作: app.g

为什么它不调用下一个中间件/admin,并且如果您向服务器发送这样的请求,则会出现错误无法获取/

得到/

然后它将点击
app.get(“/”,…)
路由处理程序。如果将
console.log(“got here”)
放在路由处理程序中,您将看到它被记录。但是,然后调用
next()
,并且不发送任何http响应,因此路由将继续。您只有一个其他路由,并且该路由与
/
不匹配,因此,在Express中,您将使用默认的404处理程序

如果希望“/”路由处理程序发送响应,请修改它以执行此操作:

    app.get("/", (req, res, next) => {
  next();
});
app.get("/admin", (req, res, next) => {
 
  res.send("<h1>Admin page</h1>");
});
app.listen(3000);
console.log("Listening on port 3000");

您正在向服务器发送什么请求?我正在向serverapp发送/get请求。get(“/”)与请求不匹配?
app.get("/", (req, res, next) => {
  res.send("got top level /");
});