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

无法向app.js提交HTML表单数据,req.body读取出现TypeError报错

解决req.body undefined的问题

这个问题我之前也踩过坑!核心原因是Express默认不会自动解析表单提交的URL编码数据,所以你的req.body才会一直是undefined,自然读不到amount和transId。

解决方案:添加表单解析中间件

你需要在你的app.js里,在定义路由之前,添加express.urlencoded()中间件。这个中间件会帮你解析表单提交的application/x-www-form-urlencoded格式数据,填充到req.body里。

修改后的app.js代码示例:

const express = require('express');
const app = express();

// 关键:添加表单解析中间件,必须放在路由定义之前
app.use(express.urlencoded({ extended: true }));

// 现在定义你的refund路由
app.post('/refund', (req, res, next) => {
  console.log(req.body.amount);
  console.log(req.body.transId);
  // 这里可以继续添加你的业务逻辑,比如返回响应给前端
  res.send('退款请求已接收');
});

// 别忘了启动服务器
app.listen(3000, () => {
  console.log('服务器运行在3000端口');
});

补充说明

  • extended: true选项允许解析更复杂的嵌套对象数据,如果你的表单没有嵌套字段,设为false也可以,但推荐用true保持兼容性。
  • 如果是处理JSON格式的请求体(比如前端用fetch发送JSON),才需要用app.use(express.json()),但你的场景是普通HTML表单,用urlencoded就够了。

现在重新提交表单,应该就能正常打印出req.body里的字段值了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:51:41