如何解决问题:“at process.processTicksAndRejections (node:internal/process/task_queues:95:5)”?

问题描述 投票:0回答:2

我想将令牌发送回用户以重置其密码,但我收到此错误:

Error: there was an error sending the email, try again later
at exports.forgotPassword (C:\\Users\\Abdurehman\\Desktop\\node course\\node practice\\FinalYearProject\\controllers\\authController.js:167:7)  
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

我到处搜索,但找不到问题的解决方案,我还没有实现重置功能,因为首先我希望发送令牌能够工作,希望你能理解。

这是

authController.js
文件

这是我的代码:

exports.forgotPassword = async (req, res, next) => {


  const user = await User.findOne({ email: req.body.email });
  if (!user) {
    return next(new AppError('no user with this email', 404));
  }


  const resetToken = user.createPasswordResetToken();

  await user.save({ validateBeforeSave: false });

 
  const resetURL = `${req.protocol}://${req.get(
    'host'
  )}/api/v1/users/resetPassword/${resetToken}`;

  const message = `forgot your password ? submit a PATCH request with your new password to : ${resetURL}.\n If you didn't forget your password , please ignore this email`;
  try {
    await sendEmail({
      email: user.email,
      subject: 'your password reset token (valid for 10 minutes)',
      message,
    });
    res.status(200).json({

      status: 'success',
      message: 'Token sent to email',
    });
  } catch (err) {
    user.passwordResetToken = undefined;
    user.passwordResetExpires = undefined;
    await user.save({ validateBeforeSave: false });
    return next(
      new AppError('there was an error sending the email , try again later'),
      500
    );
  }
};

提前谢谢您。

javascript mongodb express jwt backend
2个回答
2
投票

我遇到了同样的错误,经过一些研究后,我发现我在 sendEmail() 函数内的“transporter.sendMail(message)”之前缺少了“await”关键字。


0
投票

我在参加udemy课程时也遇到了同样的问题。 根据

transporter
文档,它使用
transport.sendMail()
而不是
.sendEmail()

https://nodemailer.com/usage/#sending-mail

另外,这也解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.