J'utilise Node.js et ExpressJS pour enregistrer un modèle mangouste. Je reçois l'erreur de Error: Can't set headers after they are sent.
Je pense qu'il a à voir avec la ligne res.redirect("/dashboard/it/model");
en conflit avec setRedirect({auth: '/login'}),
de mon itinéraire, le code dans le setRedirect est ci-dessous étiqueté. Le setRedirect provient d'un middleware appelé middleware-responder
qui faisait partie du modèle que j'utilise pour créer des comptes utilisateur Stripe. Je ne peux pas l'enlever autant que je sache. mon GitHub repo j'ai commis tous les fichiers qui ne sont pas fichiers test et sont pertinents (pas de vue non nécessaires ect que ce qui est déjà là)Erreur: Impossible de définir les en-têtes après leur envoi Node.js et ExpressJS
Enregistrer Modèle
if(type=="aps"){
var newAccessPoint = {
name: name,
manufacturer: manufacturer,
model: model,
range: range,
bands: bands,
channel: channel,
poe: poe,
notes: notes,
signout: signout,
author:author
};
// Create a new access point and save to DB
AP.create(newAccessPoint, function(err, newlyCreated){
if(err){
console.log(err);
} else {
//redirect back to models page
res.redirect("/dashboard/it/model");
}
});
}
Route
app.post('/dashboard/it/model/new',
setRender('dashboard/it/modelCreate'),
setRedirect({auth: '/login'}),
isAuthenticated,
dashboard.getDefault,
(req, res) => {
Code setRedirect
exports.setRedirect = function(options){
return function(req, res, next){
if(req.redirect){
req.redirect = _.merge(req.redirect, options);
} else {
req.redirect = options;
}
next();
};
};
setRender code
exports.setRender = function(view){
return function(req, res, next){
req.render = view;
next();
};
};
Pas de redirection vers l'option, ce que vous voyez est les options sont la valeur dans 'setRedirect ({auth: '/ login'}),' donc la redirection est 'login' mais seulement si l'utilisateur n'est pas J'ai essayé de commenter cette ligne et j'ai eu une nouvelle erreur. 'Path doit être une chaîne. Reçu undefined' –
Si l'utilisateur est déjà connecté alors vous appelez next() et passez au middleware suivant, puis à la fin de la requête, lorsque vous avez terminé ce que vous deviez faire, vous faites la redirection. Vous avez seulement besoin de rediriger quand il n'y a pas d'utilisateur connecté, pas besoin de rediriger s'il y a un utilisateur, vous continuez simplement avec la demande –
Okay donc commenter cette ligne me donne l'erreur 'Path doit être une chaîne. Reçu undefined' erreur si différente que dans OP. Comment puis-je déboguer/résoudre cette erreur alors. –