Node.js+Express+MySQL实现MVC注册功能时报Cannot read properties of undefined错误
错误原因及解决方案
1. 核心原因:req.body未被正确解析
Express默认不会自动解析请求体,你需要手动注册内置的解析中间件才能让req.body正常读取值。
在你的项目入口文件(通常为app.js/server.js)中,路由注册代码之前添加以下配置:
const express = require('express') const app = express() // 新增以下两行解析中间件 app.use(express.json()) // 解析JSON格式请求体 app.use(express.urlencoded({ extended: true })) // 解析表单格式请求体 // 后面再放你的路由注册代码,比如 // app.use('/api/auth', authRouter)
2. 校验逻辑缺陷导致报错
你当前的req.body空值校验逻辑缺少return,就算触发了400返回,代码仍然会继续向下执行读取req.body.firstName,触发报错。
修改AuthController中的校验部分代码:
// Validate request if (!req.body) { res.status(400).send({ message: "Content can not be empty!" }); return; // 新增return终止后续逻辑执行 }
3. 接口请求规范检查
调用注册接口时需要保证配置正确:
- 注册路由必须是POST类型,GET请求不会携带请求体,会直接导致
req.body为空 - 如果是传JSON格式参数,请求头必须带
Content-Type: application/json - 如果是表单提交,请求头必须带
Content-Type: application/x-www-form-urlencoded
内容的提问来源于stack exchange,提问作者Keltouma Indtaher
相关产品推荐
相关产品推荐

