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

使用Nodemailer开发联系表单时出现Cannot /POST错误是什么原因?

问题排查与修复步骤

  • 端口不匹配问题
    你的Node.js后端服务监听的端口是4000,但前端axios请求的地址写的是localhost:3000/contact_us,3000一般是React开发服务的端口,后端根本没有在这个端口暴露接口,自然会返回404的Cannot POST错误。你需要把前端axios请求的url改为http://localhost:4000/contact_us。
  • 提交事件绑定错误
    表单的onSubmit事件应该绑定在<form>标签上,你现在绑在了提交按钮上,点击按钮时自定义的提交逻辑不会触发,表单会走默认的原生POST提交行为,你没有给form设置action属性,所以直接触发错误。修改方式:把按钮上的onSubmit={this.submitEmail}移到<form>标签上。
  • 后端缺失请求体解析中间件
    你的Express代码没有加JSON请求体解析的中间件,后端收到POST请求后无法解析请求体的JSON数据,req.body会是undefined。需要在你的index.js里CORS配置的前后加一行app.use(express.json())。
  • 请求地址缺失协议头
    前端axios的url没有加http://协议头,部分浏览器会将其识别为相对路径,导致请求地址错误,修正后的axios配置如下:
    axios({
      method: "POST", 
      url:"http://localhost:4000/contact_us", 
      data:  this.state
    })
    
  • 配置项缺失问题
    你现在的Nodemailer配置里,transporter的user、pass字段,还有邮件配置的to字段都是空的,修复完前面的问题后,需要把这些字段替换为你自己的Mailtrap授权凭证和收件邮箱地址,否则邮件发送会失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:15:02