Node.js - Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido 1 puesto en Node.js (en relación al último mes)
Gráfica de Node.js

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

Publicado por Angel (1 intervención) el 11/04/2021 21:47:57
Buenas, estoy haciendo una web con Node y Mysql.

El problema está a la hora de verificar el login.

Quiero que una vez introducidos los datos se ejecute una funcion llamada login (que se encuentra en otro archivo y es solicitada por un require), la cual hace una consulta para obtener el email y contraseña (que ha sido cifrada con bcrypt). Una vez hecha la consulta, compara con el metodo bcrypt compare si la contraseña introducida en el login es igual a la hasheada.

Si la contraseña es igual, quiero que me rediriga al inicio de la página, si no lo es, que me vuelva a redirigir al login.

El problema es que recibo este error: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client y no se como solucionarlo.

Este es el codigo que llama a la funcion
1
Users.login(data.email, data.password, res.redirect('/'), res.redirect('/sign-in'));

Y este es el codigo de la función

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const login = function (email, password, success, nonsuccess) {
    if (email && password) {
        conn.query('SELECT * FROM users WHERE email = ? LIMIT 1', [email], function (err, results, fields) {
            if (results.length == 1) {
                bcrypt.compare(password, results[0].password, function (err, correct) {
                    console.log(correct);
                    if (err) {
                        console.log(err);
                    } else if (correct == false){
                        nonsuccess;
                    }else if (correct == true) {
                        success;
                    }
                })

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder