【发布时间】:2020-12-06 22:40:10
【问题描述】:
我正在使用这样的模式:
app = express();
router = express.Router();
router.use((req, res, next) => {
console.log("my middleware before");
next();
});
router.get('/foo', (req, res, next) => {
console.log("My route");
res.send("<h1>Hello</h1>")
next();
});
router.use((req, res, next) => {
console.log("my middleware after");
});
app.use("/", router);
app.get("*", (req, res, next) => {
console.log("page not found");
throw new Error("Not Found");
});
app.use((err, req, res, next) => {
console.log("Error occure");
res.send("<h1>Error</h1>");
});
app.listen(3000);
当我请求“/foo”时,我想拥有
> my middleware before
> My route
> my middleware after
<h1>Hello</h1>
当我提出其他要求时:
> page not found
> Error occure
<h1>Error</h1>
但是在每种情况下都会执行找不到页面的路由,即使路由'/foo'已经完成。 我怎样才能让它工作?
【问题讨论】:
-
您如何在浏览器中访问您的路线?
-
取决于你想在 我的中间件之后做什么你可能有兴趣使用
res.on("finish",参见:stackoverflow.com/questions/64500279/… -
或创建自己的钩子.. 毕竟 express 是事件驱动的 nodejs.org/api/events.html