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

新手求助:Express.js POST方法无法正常工作(附代码)

解决你的Express POST请求无法获取req.body的问题

作为Node.js和Express新手,遇到POST请求拿不到数据的情况太常见了,我帮你梳理几个最可能的原因和解决办法:

1. 先确认表单能被提交

看你贴的Jade代码最后是截断的,没看到提交按钮!如果表单里没有<button type="submit">或者<input type="submit">,用户根本触发不了POST请求。赶紧在表单末尾加个提交按钮:

button.btn.btn-primary(type='submit') 提交注册信息

2. 换用Express内置的请求解析器(替代body-parser)

虽然你引入了body-parser,但从Express 4.16.0开始,框架已经自带了请求解析功能,比单独装body-parser更稳定。把你路由里的body-parser代码替换成下面这样:

// 删掉原来的body-parser引入和use代码,换成这两行
router.use(express.urlencoded({ extended: false }));
router.use(express.json());

这样能确保表单默认的application/x-www-form-urlencoded格式数据被正确解析。

3. 检查主应用是否挂载了你的users路由

别忘了在app.js(或者你的项目主入口文件)里挂载users路由,不然/users/registration这个请求根本找不到对应的处理逻辑:

const usersRouter = require('./routes/users');
app.use('/users', usersRouter);

4. 修正表单字段的拼写错误

我注意到你表单里的密码字段name是passowrd(多了个o),正确应该是password。这个错误虽然不会导致整个req.body为空,但后续拿密码值的时候会找不到,记得改过来。

5. 先测试请求是否真的到达了路由

你可以临时修改POST路由,加个响应来确认请求是否被接收:

router.post('/registration', function(req, res, next) {
  console.log('POST请求已收到!');
  console.log('当前请求体:', req.body);
  res.send('收到的数据:' + JSON.stringify(req.body));
});

提交表单后看页面有没有返回内容,同时看控制台日志,就能知道req.body到底有没有数据了。

按上面的步骤排查,应该能解决你的问题。如果还是不行,把控制台的日志输出告诉我,我再帮你深挖~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:19:01