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

注册表单数据无法传至服务端,req.body为空问题求助

问题原因与解决方案

问题出在Express服务端未配置请求体解析中间件,导致无法解析前端发送的JSON格式请求数据,所以req.body为空,进而触发Cannot read properties of undefined (reading 'email')错误。

解决步骤

修改server.js,在路由注册前添加请求体解析中间件:

const express = require("express");
const cors = require("cors");
require("dotenv").config();
const app = express();
const dbConfig = require("./Config/dbConfig");
const port = process.env.PORT || 5000;

const server = require("http").createServer(app);

const usersRoute = require("./routes/usersRoutes");

app.use(cors({ origin: "http://localhost:3000" }));
// 添加请求体解析中间件
app.use(express.json()); // 解析JSON格式请求体
app.use(express.urlencoded({ extended: true })); // 解析URL编码格式请求体(兼容表单提交场景)

app.use("/api/users", usersRoute);

server.listen(port, () => console.log(`Server running on port ${port}`));

原理说明

  • Express框架默认不会自动解析请求体中的JSON数据,必须通过express.json()中间件开启解析能力,后端才能正确读取前端axios发送的JSON格式参数。
  • 前端axios的post方法默认会将传入的JS对象序列化为JSON字符串,并设置请求头Content-Type: application/json,后端需要对应中间件匹配解析。

额外验证点

  1. 确认前端registerUser的属性名与后端User模型的字段名完全一致,避免后续数据存储时出现字段不匹配问题。
  2. 若后续涉及传统表单提交(非JSON格式),express.urlencoded({ extended: true })可解析application/x-www-form-urlencoded格式数据,建议保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:18:23