Web开发新手求助:联系表单提交问题(404+req.body未定义)
解决联系表单的两个常见问题
嘿,作为Web开发新手遇到这些问题太正常了,我帮你一步步拆解解决:
问题1:Postman请求后req.body字段为undefined
这个问题几乎都是因为后端没配置请求体解析中间件导致的,邮件能发送说明你的邮件服务逻辑是通的,但拿不到表单数据。给你两个关键修复步骤:
- 如果你用的是Express框架,在后端代码的路由定义之前,一定要加上这两行中间件代码:
app.use(express.json()); // 解析JSON格式的请求体 app.use(express.urlencoded({ extended: true })); // 解析表单编码的请求体 - 检查Postman的请求配置:
- 如果是发送JSON数据,确保请求头里的
Content-Type设置为application/json,并且在Body里选择raw->JSON格式填写数据; - 如果是发送表单数据,选择
form-data或x-www-form-urlencoded,对应后端的urlencoded中间件会自动解析。
- 如果是发送JSON数据,确保请求头里的
问题2:前端提交报404 (Not Found)
这个错误原因很明确:前端请求的地址和后端服务的地址不匹配。你的后端跑在localhost:3001,但前端发请求到了localhost:3000(前端自己的服务端口)。有两种简单的解决方式:
- 直接修改前端的请求地址,把
http://localhost:3000/api/contactus改成http://localhost:3001/api/contactus; - 配置前端代理(推荐,上线前不用改地址):比如在React项目的
package.json里添加一行"proxy": "http://localhost:3001",这样前端请求/api/contactus时,会自动转发到后端的3001端口;Vue项目的话可以在vue.config.js里配置devServer.proxy。
另外还要确认后端的路由是不是正确定义了,比如是不是写了app.post('/api/contactus', (req, res) => { ... }),路径拼写不能错哦。
内容的提问来源于stack exchange,提问作者kadddeee
相关产品推荐
相关产品推荐

