Javascript 获得邮枪';发送错误的HTTP头';

Javascript 获得邮枪';发送错误的HTTP头';,javascript,reactjs,express,mongoose,mailgun,Javascript,Reactjs,Express,Mongoose,Mailgun,我有一个简单的函数,返回一个状态和一些JSON。 通过表单输入,我将用户数据保存到数据库中,同时通过mailgun向该用户发送电子邮件。所有工作正常,但终端可能出现错误 这就是代码 exports.signup=(请求、回复)=>{ 常量错误=验证结果(req); 如果(!errors.isEmpty()){ 返回res.status(422.json)({ //错误:[errors.array()[0].msg | | errors.array()[1].msg], 错误:[ { msg:e

我有一个简单的函数,返回一个状态和一些JSON。 通过表单输入,我将用户数据保存到数据库中,同时通过mailgun向该用户发送电子邮件。所有工作正常,但终端可能出现错误 这就是代码

exports.signup=(请求、回复)=>{
常量错误=验证结果(req);
如果(!errors.isEmpty()){
返回res.status(422.json)({
//错误:[errors.array()[0].msg | | errors.array()[1].msg],
错误:[
{
msg:errors.array()[0]。msg,
参数:错误。数组()[0]。参数,
},
],
});
}
const user=新用户(请求主体);
const{email,name}=req.body;
user.save((错误,用户)=>{
如果(错误){
返回res.status(400).json({
错误:“无法在数据库中保存用户”,
});
}否则{
res.json({
name:user.name,
电子邮件:user.email,
id:user.\u id,
//密码:user.password,
});
}
//邮枪-发送邮件
常数数据={
来自:me@samples.mailgun.org",
致:电邮:,
主题:“使用邮枪发送邮件”,
文字:“测试一些邮枪的威严!”,
html:`Hey${name}
欢迎,有你在船上真是太好了,
};
mg.messages().send(数据、函数(错误、正文){
//log(“成功向用户发送邮件”);
如果(错误){
返回res.json({
错误:error.message,
});
}
res.json({message:“电子邮件已成功发送”});
});
});

};这是开发人员在向客户端发送响应时的常见错误之一

这是一个执行错误。它与Mailgun API无关

如果仔细查看代码,在将用户数据写入数据库后,您将发送响应

res.json({
        name: user.name,
        email: user.email,
        id: user._id,
        // password: user.password,
      });
同样,邮件发送后,您将向客户端发送响应

res.json({message:“电子邮件已成功发送”})

如果我是对的,这一定是问题所在

可能的解决方案是,将代码更改为以下内容:

exports.signup = async (req, res) => {
  const errors = validationResult(req);

  if (!errors.isEmpty()) {
    return res.status(422).json({
      // error: [errors.array()[0].msg || errors.array()[1].msg],

      errors: [
        {
          msg: errors.array()[0].msg,
          param: errors.array()[0].param,
        },
      ],
    });
  }

  const user = new User(req.body);
  const { email, name } = req.body;
  let userData = "null"
  
   try {
    userData = await user.save();
    } 
   catch(err){
     return res.json({
         error: err.message,
        });
     }

    // mailgun - sending the mail
    const data = {
      from: "me@samples.mailgun.org",
      to: email,
      subject: "sending mail using mailgun",
      text: "Testing some Mailgun awesomness!",
      html: `<h1>Hey ${name} </h1> 
      <h2>Welcome , It's great to have you on board! </h2>`,
    };
    mg.messages().send(data, function (error, body) {
      // console.log("mail send to user successfully");
      if (error) {
        return res.json({
          error: error.message,
        });
      }
      return res.json({ message: "Email has been send successfully",...userData });
    });
  });
};

exports.signup=async(req,res)=>{
常量错误=验证结果(req);
如果(!errors.isEmpty()){
返回res.status(422.json)({
//错误:[errors.array()[0].msg | | errors.array()[1].msg],
错误:[
{
msg:errors.array()[0]。msg,
参数:错误。数组()[0]。参数,
},
],
});
}
const user=新用户(请求主体);
const{email,name}=req.body;
让userData=“null”
试一试{
userData=wait user.save();
} 
捕捉(错误){
返回res.json({
错误:err.message,
});
}
//邮枪-发送邮件
常数数据={
来自:me@samples.mailgun.org",
致:电邮:,
主题:“使用邮枪发送邮件”,
文字:“测试一些邮枪的威严!”,
html:`Hey${name}
欢迎,有你在船上真是太好了,
};
mg.messages().send(数据、函数(错误、正文){
//log(“成功向用户发送邮件”);
如果(错误){
返回res.json({
错误:error.message,
});
}
返回res.json({message:“电子邮件已成功发送”,…userData});
});
});
};

感谢您回答我的问题,但我已经找到了解决方案。。。我删除了这行代码
res.json({message:“Email已成功发送”})。因为我不需要登录控制台进行确认