我正在閱讀一本名為“使用 Node.js 進行編程”的書。這是我不太明白的代碼:https://github.com/JonathanWexler/get-programming-with-nodejs/tree/master/unit_2/lesson_12_capstone/finish/confetti_cuisine錯誤控制器.jsconst httpStatus = require("http-status-codes");exports.pageNotFoundError = (req, res) => { let errorCode = httpStatus.NOT_FOUND; res.status(errorCode); res.render("error");};exports.internalServerError = (error, req, res, next) => { let errorCode = httpStatus.INTERNAL_SERVER_ERROR; console.log(`ERROR occurred: ${error.stack}`); res.status(errorCode); res.send(`${errorCode} | Sorry, our application is taking a nap!`);};主文件const express = require("express"), app = express(), homeController = require("./controllers/homeController"), errorController = require("./controllers/errorController"), layouts = require("express-ejs-layouts");app.set("view engine", "ejs");app.set("port", process.env.PORT || 3000);app.use( express.urlencoded({ extended: false }));app.use(express.json());app.use(layouts);app.use(express.static("public"));app.get("/", (req, res) => { res.render("index");});app.get("/courses", homeController.showCourses);app.get("/contact", homeController.showSignUp);app.post("/contact", homeController.postedSignUpForm);app.use(errorController.pageNotFoundError);app.use(errorController.internalServerError);app.listen(app.get("port"), () => { console.log(`Server running at http://localhost:${app.get("port")}`);});我的問題:Express 如何知道何時運行“pageNotFoundError”或“internalServerError”?是否是這樣,如果有一個請求,由相應的路由render方法處理,中間件或其他地方的所有render或send方法都被忽略?這可能遠非正確,但會發生這樣的事情嗎?
你能解釋一下錯誤處理是如何與 Express 中間件一起工作的嗎?
胡說叔叔
2021-12-23 19:29:59