尝试注册用户并向用户发送电子邮件以进行验证,但似乎有多个响应会导致问题。
这是我从快递服务器收到的错误
_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
当我注释掉我认为是导致错误的部分时,它消失了,但是我从chrome控制台获得了500状态。
这是当我获得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错误时,将创建用户和令牌,但不会发送电子邮件。不知道为什么会这样。