Попытка зарегистрировать пользователя и отправить электронное письмо пользователю для проверки, но кажется, что наличие нескольких ответов вызывает проблему.
Это ошибка, которую я получаю с моего express сервера
_http_outgoing.js:485
throw new ERR_HTTP_HEADERS_SENT('set');
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
Когда я комментирую ту часть, которая, по моему мнению, вызывает ошибку, она исчезает, но я получаю статус 500 с моей консоли chrome.
Вот так выглядит мой код в тот момент, когда я получаю статус 500
module.exports.register = function(req, res) {
const user = new User();
user.name = req.body.name;
user.email = req.body.email;
user.setPassword(req.body.password);
user.save(function(err) {
if (err) {
console.error(err);
return console.log("Something went wrong");
}
// Create a JWT for the user
let token = user.generateJwt();
// res.status(200);
// res.json({
// token: token
// });
// Create an email verification token for this user
const validToken = new Token({
_userId: user._id,
token: crypto.randomBytes(16).toString("hex")
});
validToken.save(err => {
if (err) {
return res.status(500).send({ msg: err.message });
}
let transporter = nodemailer.createTransport({
SES: new aws.SES({ apiVersion: "2010-12-01" })
});
let mailOptions = {
from: "<my-email>",
to: user.email,
subject: "Account Verification at Simplified Client Portal",
text:
"Hello,\n\n" +
"Please verify your account by clicking the link: \nhttp://" +
req.headers.host +
"/confirmation/" +
validToken.token +
".\n"
};
transporter.sendMail(mailOptions, function(err) {
if (err) {
return res.status(500).send({ msg: err.message });
}
res
.status(200)
.send("A verification email has been sent to " + user.email + ".");
});
});
});
};
Это код, который я закомментировал
// res.status(200);
// res.json({
// token: token
// });
Один интересный Однако, когда я получаю ошибку HTTP_HEADERS_SENT в консоли сервера, пользователь и токен создаются, но электронное письмо не отправляется. Не уверен, почему это так.