You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中Express的req.body为undefined/空对象问题求助

解决Express + TypeScript中req.body返回undefined/空对象的问题

以下是针对你遇到问题的排查方向和解决方案:

1. 检查中间件注册顺序

express.json()必须在所有路由注册之前执行,否则路由处理请求时,请求体还未被解析。确保代码顺序如下:

const app = express();

// 先注册解析中间件
app.use(express.json());
// 若需要处理urlencoded格式请求,需添加此中间件
app.use(express.urlencoded({ extended: true }));

// 再注册路由
app.use(router);

2. 确认请求头与对应中间件匹配

  • 发送JSON格式请求时,必须在请求头中设置Content-Type: application/json,否则express.json()不会触发解析,req.body会是undefined。
  • 发送urlencoded格式请求时,仅靠express.json()无法解析,必须添加express.urlencoded({ extended: true })中间件,同时请求头需设置Content-Type: application/x-www-form-urlencoded。

3. 验证TypeScript类型导入正确性

确保你使用的Request和Response类型来自express库,避免类型不匹配导致的推断问题:

// 正确导入
import { Request, Response } from 'express';

const signupUser = (req: Request, res: Response): void => {
  try {
    console.log(req.body);
    res.send(req.body);
  } catch (e) {
    handleHttp(res, 'ERROR_POST_ITEM');
  }
};

4. 检查请求体格式合法性

若JSON格式存在语法错误(如引号不闭合、多余逗号),express.json()会解析失败,导致req.body为空对象。在Postman/RapidAPI中验证请求体的JSON语法是否正确。

内容的提问来源于stack exchange,提问作者Yebrai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:55:21