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

ExpressJS+TypeScript环境下body-parser解析POST请求体为空求助

解决Express + TypeScript中req.body为空的问题

可能的原因及解决方案

1. Postman请求配置错误

  • 确认请求体选择raw格式,并且右侧下拉框明确选中JSON(不是Text或其他格式),否则Postman可能无法正确设置Content-Type头,导致解析失败。
  • 手动检查请求头中Content-Type: application/json是否存在,避免Postman自动覆盖该头。

2. Express中间件兼容问题

Express 4.16+已内置body-parser的核心功能,无需单独依赖body-parser包(可卸载该依赖),改用内置方法更稳定:
修改app.ts:

import express, { Application, Request, Response } from 'express';
import morgan from 'morgan';
// 移除body-parser的导入
import cors from 'cors';

const app: Application = express();

app.use(cors());
// 替换为express内置的解析方法
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(morgan('tiny'));

app.post('/test', (req: Request, res: Response) => {
    console.log("req.body => ", req.body)
    res.send(req.body)
})

export default app;

3. Dev脚本未正确运行最新TypeScript代码

你的dev脚本未指定用ts-node执行TypeScript文件,可能导致nodemon运行旧的build/index.js而非最新代码。修改脚本:

"scripts": {
    "start": "node build/index.js",
    "build": "tsc",
    "dev": "cross-env NODE_ENV=development nodemon --exec ts-node index.ts",
    ...
}

或创建nodemon.json配置文件:

{
  "watch": ["."],
  "ext": "ts",
  "exec": "ts-node index.ts"
}

4. 用curl测试排除Postman问题

如果以上步骤无效,用curl命令发送请求,确认问题是否出在Postman:

curl -X POST http://localhost:8080/test \
-H "Content-Type: application/json" \
-d '{"title": "Testing", "description": "I am testing server."}'

查看控制台输出是否正常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:27:41