【发布时间】:2021-02-26 14:37:34
【问题描述】:
不断收到指向 res.redirect 的错误...我认为添加“return”会修复它,因为它允许中间件结束但错误仍然存在
功能如下
app.post('/login', (req,res) => {
//set this up with passport ideally... auth with db
var username = req.body.email
var password = req.body.password
User.findOne({email:username})
.then(user => {
if(user) {
bcrypt.compare(password, user.password, function(err, result) {
if(err) {
//maybe send this back in res json?
console.log(err)
return res.redirect('/login')
}
else if(result){
//let token = jwt.sign({name:user.name}, )
req.session.user = user.dataValues
console.log('Login successful')
return res.redirect('/dashboard'); //error happening here
}else {
console.log('Password does not match')
return res.redirect('/login')
}
})
}
})
res.redirect('/')
})
这是我的输出
Login successful
undefined:0
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:533:11)
at ServerResponse.header (/Users/sherm/Documents/daily_email/node_modules/express/lib/response.js:771:10)
at ServerResponse.location (/Users/sherm/Documents/daily_email/node_modules/express/lib/response.js:888:15)
at ServerResponse.redirect (/Users/sherm/Documents/daily_email/node_modules/express/lib/response.js:926:18)
at /Users/sherm/Documents/daily_email/server.js:79:27 {
code: 'ERR_HTTP_HEADERS_SENT'
}
npm ERR! code ELIFECYCLE
【问题讨论】:
-
为什么底部有
res.redirect('/')?删除它。
标签: javascript node.js express