Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

715
Views
ExpressJwt no es una función

Estoy tratando de escribir un middleware de autorización de usuario. Uso esta función para validar y verificar la autorización más adelante.

He hecho yarn add express-jwt.

código auth.js:

 const SECRET = 'secret-message'; const jwt = require('jsonwebtoken'); const expressJwt = require('express-jwt'); const compose = require('composable-middleware'); function sign(user) { return jwt.sign({ _id: user._id, }, SECRET, { expiresIn: 60 * 60 }); } function sendUnauthorized(req, res) { console.log(req.headers.authorization); console.log(req.user); res.status(401).json ({ message: 'Unathorized' }); }; const validateJwt = expressJwt({ secret: SECRET, fail: sendUnauthorized, getToken(req) { if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') { return req.headers.authorization.split(' ')[1]; } else if (req.query && req.query.access_token) { return req.query.access_token; } return null; } });

Y el error es:

 const validateJwt = expressJwt({ ^ TypeError: expressJwt is not a function

Estoy atascado en este error y no puedo continuar. De verdad necesito algún consejo.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Como dice el error, expressJwt no es una función. El siguiente paso lógico sería verificar qué es en su lugar y, al mismo tiempo, volver a verificar su suposición de que es una función (¿por qué cree eso?) y buscar fuentes para eso, por ejemplo, revisando los documentos de el paquete.

Encontrará que a) es un objeto con { expressjwt: <some function here> } , y b) que los documentos muestran un ejemplo que usa la desestructuración ( var { expressjwt: jwt } = require('express-jwt') ) que no lo haces

Ambos hallazgos deberían señalarle el hecho de que su suposición de que la exportación predeterminada del módulo es una función es incorrecta y, en cambio, es un objeto con la propiedad expressjwt , que es la función que está buscando, por lo que podría arreglar su código usando la desestructuración en la importación de la siguiente manera:

 const { expressjwt: expressJwt } = require('express-jwt');

(Alternativamente, usar expressJwt.expressjwt(...) también habría funcionado, por supuesto, pero creo que se ve bastante feo y es innecesariamente detallado).

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!