TypeScript项目POST新增用户时报Cannot read property 'userid' of undefined错误
问题原因
- 报错本质是
req.body为undefined,所以尝试从req.body解构userid字段时触发了属性读取错误 - 根因是Express默认不会自动解析POST请求的JSON格式请求体,你没有注册对应的解析中间件
解决步骤
- 找到你的Express服务主入口文件(通常为
app.ts/index.ts),在注册路由之前添加JSON解析中间件:
app.use(express.json());
如果有接收表单格式(x-www-form-urlencoded)请求的需求,可以额外添加:
app.use(express.urlencoded({ extended: true }));
- 检查Postman请求配置:
- 请求头的
Content-Type字段需设置为application/json - Body面板选择
raw格式,子格式选JSON,确认你提交的JSON数据语法合法
- 确认中间件注册顺序:所有请求解析类中间件必须放在路由注册代码之前,否则请求到达控制器时还未完成请求体解析,
req.body仍为undefined
附加说明
如果你使用的是Express 4.16.0之前的旧版本,需要单独安装body-parser包完成解析,配置如下:
npm install body-parser
入口文件引入使用:
import bodyParser from 'body-parser'; app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true }));
内容的提问来源于stack exchange,提问作者AlexZ
相关产品推荐
相关产品推荐

