MEAN栈新手遇TypeError:读取undefined的'title'属性,请求体传递存疑
MEAN栈POST请求req.body未定义问题解决
错误根源
你碰到的TypeError: Cannot read properties of undefined (reading 'title'),本质是Express框架默认不会自动解析HTTP请求体,导致req.body为undefined,自然读不到title属性。换成固定字符串后不需要依赖请求体,所以接口能正常运行。
解决方法
在你的index.js里添加请求体解析中间件,步骤如下:
- 引入Express后,添加两行代码:
app.use(express.json()); // 解析JSON格式的请求体 // 若需要处理表单提交的urlencoded格式,再加上下面一行 app.use(express.urlencoded({ extended: true }));
- 必须保证这两行代码在挂载路由之前执行(比如放在
app.use('/api/todos', todoRoutes)之前),这样路由才能拿到解析后的请求体数据。
原理说明
express.json():专门处理Content-Type为application/json的请求,把请求里的JSON字符串转成JS对象,挂载到req.body上。express.urlencoded({ extended: true }):处理表单提交的application/x-www-form-urlencoded格式请求,extended: true支持解析嵌套结构的表单数据。
额外检查项
- 前端发送请求时,要确保请求头的
Content-Type设置为application/json(如果传的是JSON数据)。 - 确认前端发送的请求体里确实包含
title和content字段。
内容的提问来源于stack exchange,提问作者Norstorin
相关产品推荐
相关产品推荐

