【问题标题】:500 Internal Server Error,Request Timeout in nodejs resetpassword function500 内部服务器错误,nodejs resetpassword 函数中的请求超时
【发布时间】:2019-08-15 06:41:04
【问题描述】:

我是 Nodejs 和 ES6 的新手。我编写了登录、注册和重置密码的代码。我有这个 “此请求处理时间过长,已被服务器超时。如果不应该超时,请联系本网站管理员增加“连接超时”。当我尝试在 nodejs 中调用重置密码时。我使用 es6 模块。如何更正这些代码。

我的代码:

   export const resetPasswordInit=(req,res)=>{
  User.findOne({email:req.body.email},(err,user)=>{
    if(err) throw err;
    if(user){
        const random=randomstring.generate(12);
        user.tempPassword=bcrypt.hashSync(random,10);
        user.tempPasswordTime=new Date();
        user.save((err,user)=>{
            if (err)
            return res.status(400).send({
                message:err
            });
              const transporter=nodemailer.createTransport({
                host: 'mail.example.com',
                port: 465,
                secure: true, 
                  auth: {
                 user: "info@example.com",
                pass: "example12"
              }
             });

              const mailOptions={
                  from :'Sender Name <info@example.com>s',
                  to : req.body.email,
                  subject:'Reset Password Request',
                  html: `
                  <h1>Hi,</h1>
                  <h2>Here is your password reset key</h2>
                  <h2><code contenteditable="false" style="font-weight:200;font-size:1.5rem;padding:5px 10px; background: #EEEEEE; border:0">${random}</code></h4>

                  thanks,
                `
              };
                     transporter.sendMail(mailOptions, function(error){
          if(error){
          console.log('Error occured');
         console.log(error.message);
     return;
   }
  else
  {
 console.log('Message sent successfully!');
 }

 });
        })
    }
    else{
        res.status(401).json({ message: 'failed. No user found!'});
    }
});
}

【问题讨论】:

  • 在成功的情况下你永远不会响应请求。
  • Tnx @jonrsharpe ,我更正了,但还不行
  • 你没有更正它,你的代码仍然没有响应。
  • @jonrsharpe 请告诉我,问题出在哪里?
  • @jonrsharpe ,我认为问题不是因为响应,它甚至不发送电子邮件。

标签: javascript node.js express ecmascript-6 es6-modules


【解决方案1】:

当一切顺利时,您从未回应,即成功案例。发送邮件后尝试添加以下行,即在transporter.sendMail回调函数的末尾。

res.status(200).json({
  message: 'Message sent successfully!'
});

进一步请确认您使用的是有效的 smtp 凭据和服务器地址。

【讨论】:

  • 嗨,你的意思不是:console.log('消息发送成功!'),我应该写你的代码。但我仍然有同样的错误
  • 尝试将代码放在transporter.sendMail之前。
  • 检查 smtp 凭据和服务器地址。
  • 我试过了,发送邮件没有问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 2022-10-23
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多