Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

283
Vistas
Manejo de error express en Next.js con axios

Estoy creando la funcionalidad de inicio de sesión para mi aplicación con una llamada asíncrona a mi API. Mi problema es que, aunque Express arroja un error, .then() aún se ejecuta con el error y no con la respuesta real del usuario y del token. No estoy seguro de por qué la función de inicio de sesión no 'captura' el error y en su lugar ejecuta el código dentro de .then().

Mi función expresa:

 // express funciton to login a user app.post('/api/users/login', (req, res) => { const { email, password } = req.body database.getUser(email, password, (error, user) => { console.log(error) if (error) { res.send({ error }) //errors are being handled here and are returned in the result of my frontend API call return } const token = jwt.generateToken({ userId: user.id, name: user.name, email: user.email }) res.send({ token: token, user:user }) }) }) //getUser function with mySQL query function getUser(email, password, callback) { const query = ` SELECT id, name, email, password FROM users WHERE email = ? ` const params = [email] connection.query(query, params, (error, results, fields) => { if (!results || results.length === 0) { callback(Error("Email is incorrect")) return } const user = results[0] bcrypt.compare(password, user.password, (error, same) => { console.log(error) if (error) { callback(error) return } if (!same) { callback(Error("Password is incorrect")) return } callback(null, user) }) }) } exports.getUser = getUser

Mi función de inicio de sesión en Next.js:

 const login = async ({ email, password }) => { return await axios.post('http://localhost:4200/api/users/login', { email: email, password: password }) .then((result) => { //when backend throws error, they are contained here as "result.error" still running these lines of code sessionStorage.setItem('token', result.data.token); axios.defaults.headers.common['Authorization'] = "Bearer " + result.data.token; console.log('user signed in'); }) .catch((err) => { //want errors to be directed here instead so I can properly handle them within the UI console.error("Username or password is incorrect!!") }) };

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Donde tiene .catch(error) solo se producirá un error si hay un problema con la promesa de axios que se puede completar.

En este caso, la promesa de axios se completa correctamente, sin embargo, luego se le devuelve un código de error válido por el cual no se puede completar el inicio de sesión.

Por lo tanto, un enfoque estaría dentro de su .then(result) para buscar ese tipo de resultado y hacer algo.

Entonces algo como

 .then((result) => { if (result.error) { ... return an error message to user ... } else { sessionStorage.setItem('token', result.data.token); axios.defaults.headers.common['Authorization'] = "Bearer " + result.data.token; console.log('user signed in');} })
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda