Express xếp mọi app.use() và route handler vào một stack theo đúng thứ tự khai báo, rồi duyệt từ trên xuống cho mỗi request. Một middleware chỉ chạy nếu request đi tới được vị trí của nó.
Hai điều kiện làm dòng chảy dừng lại:
- Handler phía trên kết thúc response (res.send, res.json) và không gọi next().
- Handler phía trên quên gọi next() — request treo đến khi timeout.
js
app.get('/users', (req, res) => res.json([])) // response ends here
app.use(logger) // never reached for GET /users
// correct order
app.use(logger)
app.get('/users', (req, res) => res.json([]))Trật tự chuẩn của một app: middleware hạ tầng (helmet, cors, body parser, logger) → routes → handler 404 → error-handling middleware đặt cuối cùng.
Đặt sai chỗ là nguyên nhân phổ biến của "CORS không có tác dụng" hoặc "req.body undefined".