Я использую Firebase для управления пользователями. Я использую firebase.auth().signInWithEmailAndPassword()
метод для входа в систему пользователей. Работает нормально. Но когда я пытаюсь выйти, используя метод firebase.auth().signOut()
, он дает ответ, а nodejs просто выдает следующую ошибку.
[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Server running on port: 3000
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:485:11)
at ServerResponse.header (D:\web-server\TellMe-API\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (D:\web-server\TellMe-API\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (D:\web-server\TellMe-API\node_modules\express\lib\response.js:267:15)
at Object.next (D:\web-server\TellMe-API\api\routes\firebaseAuth.js:29:36)
at D:\web-server\TellMe-API\node_modules\@firebase\util\dist\index.node.cjs.js:1226:22
at D:\web-server\TellMe-API\node_modules\@firebase\util\dist\index.node.cjs.js:1336:21
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
code: 'ERR_HTTP_HEADERS_SENT'
}
Это код, который я использовал для выхода из системы.
router.post('/signout', (req, res) => {
const user = firebase.auth().currentUser;
if (user) {
firebase.auth().signOut().then(() => {
res.status(200).json({
status: 'success',
message: 'Successfully logged/signed out'
});
}).catch(error => console.log('Something went wrong! ', error))
} else {
res.status(403).json({
status: 'failure',
message: 'user already logged out.'
});
}
});
Я также пытался использовать метод async / await, он тоже не работает. Везде, где я вызываю метод firebase.auth().signOut()
, выдается вышеуказанная ошибка.