私は盲目であるかどうかはわかりませんが、私は応答を2回送信しようとしています。 エラーが発生しましたError: Can't set headers after they are sent.
Express/Node:エラー:送信後にヘッダーを設定できない
transporter.sendMail()
機能で送信されたレスポンスが来ているようです。
マイコード:
router.route('/email').post(function(req, res) {
var dir = req.body.moduleCode
+ '/'
+ req.body.year
+ '/'
+ req.body.semester
+ '/'
+ req.body.assignCode
+ '/';
for (i in req.body.documentsNoExt) {
Student.findById(req.body.documentsNoExt[i], function (err, student) {
if (err) {
console.log(err);
}
var mailOptions = {
from : '"Feedbacker" <[email protected]>',
to: student.email,
subject: 'Mark feedback for ' + req.body.assignCode,
text: 'Dear ' + student.firstName + ' ' + student.lastName + ','
+ 'Please find attached your feedback for the assignment ' + req.body.assignCode + ' module ' + req.body.moduleCode + '.',
attachments: [
{
path: './server/pdfs/' + dir + student._id + '.pdf',
}
]
}
transporter.sendMail(mailOptions, function(error, info) {
if(error) {
console.log(error);
}
return res.status(200).json({ message: 'Successfully sent emails!' });
})
})
}
});
ここに私のHTTP POSTがangular2である:
sendEmail(documents, assignment) {
this.progress = 1;
var documentsNoExt = documents.map(function (e) {
return e.replace(/\.[^/.]+$/, "");
});
var emailInfo = {
"moduleCode" : assignment.modInsID[0].modID[0]._id,
"year" : assignment.modInsID[0].year,
"semester" : assignment.modInsID[0].semester,
"assignCode" : assignment.code,
"documentsNoExt": documentsNoExt
};
this.authHttp.post("/api/email", JSON.stringify(emailInfo), this.options).subscribe(
res => {
this.sendInfoMsg("Succesfully sent E-mails.", "success");
this.progress = 2;
},
err => this.sendInfoMsg(err._body, "danger")
);
}
私はそれを引き起こしているかを見ることができないとして、私は二度、応答を送信した任意のアイデア。
ああ撃ちます!それはtransporter.sendMailがループしているからです!ああ... * facepalm * –