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

Node.js+Nodemailer发送邮件报错ReferenceError: data未定义

排查Node.js v18.15.0 + Nodemailer中「ReferenceError: data is not defined」错误

错误根源

你提供的代码中,包含transporter.sendMail的sendEmail函数未声明接收data参数,导致当你在forgotPasswordToken方法里调用sendEmail(data)时,函数内部无法识别data变量,直接触发「ReferenceError: data is not defined」。另外,sendEmail是异步函数,调用时未加await,还可能引发未捕获的Promise异常。

解决方法

1. 修正sendEmail函数定义

给sendEmail添加data参数,并声明为async函数(因为用到了await transporter.sendMail):

// 修正后的sendEmail函数
const sendEmail = async (data) => {
  // send mail with defined transport object
  let info = await transporter.sendMail({
    from: '"hey" <abc@gmail.com>',
    to: data.to,
    subject: data.subject,
    text: data.text,
    html: data.html,
  });
  // 可选:添加日志查看发送状态
  console.log("邮件发送成功,ID:%s", info.messageId);
};

2. 函数调用时添加await

在forgotPasswordToken方法里调用sendEmail时,加上await,保证异步操作完成:

// 原代码中的sendEmail(data)修改为:
await sendEmail(data);

3. 检查函数定义顺序

确保sendEmail函数在forgotPasswordToken方法之前定义,或者提前用function声明(避免变量提升问题)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:52:39