#1. 忘记 next(),请求悬挂
app.use((req, res, next) => {
console.log('检查证件');
// 忘了 next();
});结果:请求一直卡住。
#2. 已经发过响应,又继续发
app.get('/roads/:id', (req, res) => {
res.json({ id: req.params.id });
res.send('又发一次');
});结果:报错,类似“响应头已经发送”。
原则:
一次请求,只能正式发出一份响应。
#3. 解析中间件放错顺序
app.post('/roads', (req, res) => {
res.json(req.body); // undefined
});
app.use(express.json());#4. 把查询参数当成路由路径一部分
/roads?district=east真正的路由路径仍然是:
/roadsdistrict=east 是查询参数,不是路径本身。
#5. 所有逻辑都塞在一个文件
后果:
- 改一处牵一片
- 路由和业务混在一起
- 测试困难
- 新同事看不懂地图
#6. 误以为 Express 自带一切
Express 很轻,它不会自动给你:
- ORM
- 权限系统
- 参数校验体系
- 任务队列
- 完整工程结构
它给你的,是一套很自由的主干道系统。自由的另一面,就是你得自己做城市规划。
#7. 误把 Express 当成“只能做 API”
不是。它能做:
- JSON API
- 服务端模板渲染
- 静态资源托管
- 文件下载
- 传统网站
- 后台系统
Express 不是只会修“政务接口路”,它也能修“公告栏路”和“页面路”。