Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
El middleware ExpressJs se ejecuta al iniciar la aplicación

Tengo el siguiente código:

 const app = require("express")(); const middleware = (obj) => (req, res, next) => { next(); }; app.get( "/users", middleware({ id: req.login.id, }) ); app.listen(9999, () => console.log("test running on port 9999"));

Cuando ejecuto la aplicación me da el siguiente error:

ReferenceError: req no está definido

Sé que req no está definido en el middleware, pero mi pregunta es quién ejecuta el middleware incluso antes de enviar cualquier solicitud (al iniciar la aplicación).

porque lo despiden? quien lo invoca y como prevenir eso?

Si tiene este código, por ejemplo, no arrojará ningún error:

 const y = (propName) => console.log(propName); const x = () => y({ req: req.login.id });

porque x nunca se llama. pero en mi aplicación Express, ¿por qué se lee req.login.id al iniciar la aplicación?

about 4 years ago · Santiago Gelvez
2 Respostas
Responde à pergunta

0

Segun tengo entendido, tienes un error en la linea 10:

 app.get( // 7 "/users", // 8 middleware({ // 9 id: req.login.id, // 10 }) // 11 ); // 12

Hay una diferencia entre su código y su ejemplo: en su código, ejecuta la aplicación. get(...) , por lo que la función get(...) tiene sus propios argumentos. El segundo argumento es middleware(...) , que también es una función. La función de middleware (...) no tiene que ejecutarse, y tiene razón en eso, pero el middleware (...) también es un argumento (para la función principal), pero como función, debería definirse con sus propios argumentos. Significa que no puede poner allí lo que quiera dentro de los corchetes de la función de middleware (...) como argumentos. Tienes que poner allí solo cosas definidas. Por favor, no mezcle el comando javascript con la definición de la función . Entonces, la diferencia entre su código y su ejemplo dado es que en su ejemplo solo tiene algunas cosas no definidas en el cuerpo de la función, pero no como argumento. Puede estar seguro de eso, cuando escribirá su mismo ejemplo de otra manera, que es lo mismo:

 const y = (propName) => { // 1 console.log(propName) // 2 }; // 3 const x = () => { // 4 y({ req: req.login.id }) // 5 }; // 6

Como puede ver en la quinta línea, solo tiene algunas cosas en el cuerpo, por eso nunca se ejecutó, pero en su código tenía algunas cosas que se ejecutaron.

PD: vi alguna respuesta, así que pensé que podría ser útil escribir aquí un código alternativo también. Puede modificar su código de esta manera, donde el requisito se usa dentro del cuerpo del middleware:

 const app = require("express")(); const middleware = (obj) => (req, res, next) => { // use req.login.id here... next(); }; app.get("/users", middleware); app.listen(9999, () => console.log("test running on port 9999"));
about 4 years ago · Santiago Gelvez Relatório

0

Porque está llamando a una función para definir el middleware. Debe usarlo como se muestra a continuación.

 const app = require("express")(); const middleware = (obj) => (req, res, next) => { const {login:{id}} = req.params; if(id){ // Things to do... } next(); }; app.get( "/users", middleware );
about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda