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

258
Vistas
¿Por qué req.somevariable y res.locals no funcionan con las devoluciones de llamada de jwt?

Tenemos una route y un middleware como este:

Cuando las hacemos así:

 //middleware router.use((req, res, next) => { // check header or url parameters or post parameters for token let token = req.body.token || req.query.token || req.headers['x-access-token'], // verifies secret and checks exp jwt.verify(token, config.secret, (err, decoded) => { if (err) { return res.json({ success: false, message: 'Failed to authenticate token.' }); } else { // if everything is good, save to request for use in other routes res.locals.test = "test"; req.somevariable = "variable1"; console.log("res.locals.test inside middleware ", JSON.stringify(res.locals.test)); console.log("req.somevariable inside middleware ", JSON.stringify(req.somevariable)); next(); } }); next(); }); //TestRoute router.get('/TestRoute', (req, res) => { console.log("res.locals.test outside middleware ", JSON.stringify(res.locals.test)); console.log("req.somevariable outside middleware ", JSON.stringify(req.somevariable)); });

Los valores de req.somevariable y res.locals.test no están undefined fuera del middleware

Cuando las hacemos así:

 //middleware router.use((req, res, next) => { res.locals.test = "test"; req.somevariable = "variable1"; console.log("res.locals.test inside middleware ", JSON.stringify(res.locals.test)); console.log("req.somevariable inside middleware ", JSON.stringify(req.somevariable)); next(); }); //TestRoute router.get('/TestRoute', (req, res) => { console.log("res.locals.test outside middleware ", JSON.stringify(res.locals.test)); console.log("req.somevariable outside middleware ", JSON.stringify(req.somevariable)); });

Los valores de req.somevariable y res.locals.test están disponibles fuera del middleware .

¿Cuál es el problema aquí?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

res.locals.VARIABLENAME = req.user

VARIABLENAME (cualquiera que sea la variable en la que lo configure) puede aparecer como indefinido cuando usa .ejs o cuando la representación dinámica con esa variable, puede obtener errores como que su nombre de variable no está definido.

ESTO ES UNA EXTRAÑA con res.locals : cuando desee utilizar el nombre de la variable que configuró en res.locals con la representación, debe definir req.user en su función QUE REPRESENTA EL ARCHIVO.

Backend: res.locals.currentUser = req.user

 //THIS FUNCTION WILL RENDER PERFECTLY LETTING ME USE currentUser in my .ejs file upgradeForm(req, res, next) { let saved = req.user; if(req.user){ res.render("users/upgrade"); } else{ req.flash("notice", "You've successfully signed in!"); res.redirect("/"); } }

SIN EMBARGO

 //THIS FUNCTION WILL SAY currentUser is UNDEFINED IN MY .ejs file upgradeForm(req, res, next) { if(req.user){ res.render("users/upgrade"); } else{ req.flash("notice", "You've successfully signed in!"); res.redirect("/"); } }

No hay diferencia de código, excepto que la representación de la función de trabajo tiene req.user establecido en una variable (ni siquiera tiene que usar esa variable). Me tomó 9 horas resolver este problema, ¡pero ahora ya lo sabes!

over 4 years ago · Santiago Trujillo 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