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

593
Vistas
res.redirect no es una función - express.js

Soy nuevo en Express.js y estoy tratando de crear un acortador de URL.

Cuando el usuario navega a domain.com/r/, consulto la base de datos para obtener el parámetro y obtengo la URL real.

Uso res.redirect para intentar redirigir a su URL almacenada, pero falla con 'res.redirect no es una función'.

Por favor, vea el fragmento a continuación:

 router.get('/r/:shortUrl', function(req, res) { connectDatabase.then( checkDatabase(req.params.shortUrl) .then( res => { console.log('checkdatdabase res => ' + res); //res = 'https://www.google.com' res.redirect(res); //TypeError: res.redirect is not a function }) .catch(e => { //executed due to above error console.error(e); res.redirect(307, '/home'); }) ) });

Cualquier consejo sería muy apreciado ya que este es un proyecto de aprendizaje para mí.

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

0

Tienes dos variables llamadas res .

Uno, pasado a la devolución de llamada que pasa a get() es un objeto de respuesta que tiene un método de redirect .

El otro es el valor resuelto de checkDatabase y no es un objeto de respuesta.

Este último ha ensombrecido al primero, por lo que ya no puede acceder a él.

Use nombres únicos para sus variables para evitar este problema.


Recomiendo usar un linter. ESLint puede detectar este tipo de problema con la regla de no sombra .

about 4 years ago · Juan Pablo Isaza Denunciar

0

datdabaseRes y res deben tener un nombre de variable diferente. De lo contrario, res tiene el objeto de respuesta de la conexión de la base de datos en el ámbito en el que intenta usarlo.

 router.get('/r/:shortUrl', function(req, res) { connectDatabase.then( checkDatabase(req.params.shortUrl) .then( datdabaseRes => { console.log('checkdatdabase res => ' + datdabaseRes); //res = 'https://www.google.com' res.redirect(datdabaseRes); //TypeError: res.redirect is not a function }) .catch(e => { //executed due to above error console.error(e); res.redirect(307, '/home'); }) ) });

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