Javascript 节点断开连接并说:Can';t在发送邮件后设置邮件头
register.jsJavascript 节点断开连接并说:Can';t在发送邮件后设置邮件头,javascript,node.js,api,Javascript,Node.js,Api,register.js events.js:160 throw er; // Unhandled 'error' event ^ Error: Can't set headers after they are sent. register.js:20:18 mainFunctions.js user.save(function(err) { if(err){ return mainFunctions.sendError(res, req, err
events.js:160
throw er; // Unhandled 'error' event
^
Error: Can't set headers after they are sent.
register.js:20:18
mainFunctions.js
user.save(function(err) {
if(err){
return mainFunctions.sendError(res, req, err, 500, 'error register')
} else{
mainFunctions.sendCheck(res, 'Register successful', 200);
return res.redirect('/');
}
另外,在server.js(主文件app)中,我编写了app.set('json spaces',0) 这两行代码是主要问题
module.exports = {
sendError: function(res, err, status=500, stringLog='withOutStringLog'){
log.error(stringLog + err);
res.setHeader('Content-Type', 'application/json');
res.status(status).send(JSON.stringify({ err }));
},
sendCheck: function(res, stringLog='withOutStringLog', status=200){
log.info(stringLog);
res.setHeader('Content-Type', 'application/json');
res.status(status).send(JSON.stringify({ stringLog }));
}
}
他们都试图将响应发送回客户端
为了解决这个问题。你可以简单地评论其中一个
从您的代码中,我建议您离开return res.redirect('/')代码>因为它会在成功登录/注册时将用户重定向到主页
希望这有帮助。log=winston(logger)user.save
else
block:您使用sendCheck
发送响应,然后尝试发送另一个(redirect
)。FWIW,Express有一个有用的方法可以为您保存一些代码。如果您多次调用res.send(),则会出现此错误。如果发生这种情况,您可以使用1 res调试(thx,wostex=),它可以工作。
mainFunctions.sendCheck(res, 'Register successful', 200);
return res.redirect('/');