Cannot set headers after they are sent to the client. Прошу помогите. Почему вылезает ошибка?
Я только начинаю свой путь в программировании, и вот столкнулся с такой ошибкой Cannot set headers after they are sent to the client. Прошу помощи
const { Router } = require('express');
const router = Router()
const User = require('../models/user')
router.get('/', (req, res) => {
res.render('login');
});
router.post('/reg', async(req, res) => {
const { email, pass, confirm } = req.body
const mbUser = await User.findOne({ email })
if (mbUser) {
console.log(`${email} уже есть в бд`)
res.redirect('/')
} else {
const user = new User({
email,
pass
})
await user.save()
res.redirect('/')
}
});
router.post('/auth', async(req, res) => {
const { email, pass, confirm } = req.body
const mbUser = await User.findOne({ email })
if (mbUser) {
const mbPass = User.findOne({ pass })
console.log('Mail is Ok!')
res.redirect('/')
if (mbPass) {
req.session.user = mbUser
req.session.isAuth = true
req.session.save(error => {
if (error) throw error
res.redirect('/')
})
console.log('Pass is Ok!')
res.redirect('/')
} else {
console.log('Pass is not ok!')
res.redirect('/')
}
} else {
console.log('Mail is not Ok!')
res.redirect('/')
}
});
Полная ошибка node:_http_outgoing:576 throw new ERR_HTTP_HEADERS_SENT('set'); ^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at new NodeError (node:internal/errors:371:5) at ServerResponse.setHeader (node:_http_outgoing:576:11) at ServerResponse.header (C:\Users\69\Desktop\2\node_modules\express\lib\response.js:776:10) at ServerResponse.location (C:\Users\69\Desktop\2\node_modules\express\lib\response.js:893:15) at ServerResponse.redirect (C:\Users\69\Desktop\2\node_modules\express\lib\response.js:931:18) at C:\Users\69\Desktop\2\routes\login.js:42:21 at C:\Users\69\Desktop\2\node_modules\connect-mongodb-session\index.js:246:21 at C:\Users\69\Desktop\2\node_modules\mongodb\lib\utils.js:510:9 at C:\Users\69\Desktop\2\node_modules\mongodb\lib\operations\execute_operation.js:48:55 at C:\Users\69\Desktop\2\node_modules\mongodb\lib\utils.js:510:9 { code: 'ERR_HTTP_HEADERS_SENT' }
Ошибку решил, если вдруг кому интересно
try {
if (mbUser) {
const mbPass = pass === mbUser.pass
console.log('Mail is Ok!')
if (mbPass) {
req.session.user = mbUser
req.session.isAuthen = true
req.session.save(error => {
if (error) throw error
})
console.log('Pass is Ok!')
res.redirect('/')
} else {
console.log('Pass is not ok!')
}
} else {
console.log('Mail is not Ok!')
res.redirect('/')
}
} catch (e) {
console.log(e)
}