Sagen Sie, ich habe diesen Code mit dem Router() von Express.Express mit dem Router() params
authRoute.param('token', function(req, res, next, token) {
User.findOne({ 'local.resetPasswordToken': req.params.token, resetPasswordExpires: { $gt: Date.now() }}, function(err, user) {
if (!user) {
req.flash('error', 'error msg here');
return res.redirect('/forgot');
}
req.user = user;
})
next();
})
authRoute.route('/reset/:token')
.get(function(req, res) {
res.render('reset', {
user: req.user
})
})
ich diesen Fehler:
_http_outgoing.js:346
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:346:11)
Ohne den Router(), das ist, wie es aussieht:
app.get('/reset/:token', function(req, res) {
User.findOne({ resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now() } }, function(err, user) {
if (!user) {
req.flash('error', 'Password reset token is invalid or has expired.');
return res.redirect('/forgot');
}
res.render('reset', {
user: req.user
});
});
});
Was bin ich mit der Router.param Seite falsch? Ich lese auf die Fehlermeldung, die gegeben wird, und ich lerne es passiert, wenn ein Versuch unternommen wird, Header für die Antwort zu setzen, die bereits festgelegt wurde.
Danke, die Fehlermeldung ist weg und zeigt auf die '/ forgotten'-URL, was bedeutet, dass etwas nicht richtig funktioniert, was ein separates Problem ist, danke dieser Frage. Vielen Dank. – Rexford
Gern geschehen, froh, dass ich helfen konnte! – Nindaff