全书目录

第十二篇:Express 完全指南 —— 老城区主干道宇宙

第十四章:常见陷阱 —— 老城区最容易堵车的地方

1 分钟 422 字 第 252 / 962 个阅读单元
#1. 忘记 next(),请求悬挂
js
app.use((req, res, next) => {
  console.log('检查证件');
  // 忘了 next();
});

结果:请求一直卡住。

#2. 已经发过响应,又继续发
js
app.get('/roads/:id', (req, res) => {
  res.json({ id: req.params.id });
  res.send('又发一次');
});

结果:报错,类似“响应头已经发送”。

原则:

一次请求,只能正式发出一份响应。

#3. 解析中间件放错顺序
js
app.post('/roads', (req, res) => {
  res.json(req.body); // undefined
});

app.use(express.json());
#4. 把查询参数当成路由路径一部分
text
/roads?district=east

真正的路由路径仍然是:

text
/roads

district=east 是查询参数,不是路径本身。

#5. 所有逻辑都塞在一个文件

后果:

  • 改一处牵一片
  • 路由和业务混在一起
  • 测试困难
  • 新同事看不懂地图
#6. 误以为 Express 自带一切

Express 很轻,它不会自动给你:

  • ORM
  • 权限系统
  • 参数校验体系
  • 任务队列
  • 完整工程结构

它给你的,是一套很自由的主干道系统。自由的另一面,就是你得自己做城市规划。

#7. 误把 Express 当成“只能做 API”

不是。它能做:

  • JSON API
  • 服务端模板渲染
  • 静态资源托管
  • 文件下载
  • 传统网站
  • 后台系统

Express 不是只会修“政务接口路”,它也能修“公告栏路”和“页面路”。