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

1.2K
Vistas
express.js req.body indefinido en middleware

Actualmente estoy enfrentando un problema en mi aplicación de nodo.

al intentar usar middleware en una solicitud de publicación, el req.body se vuelve indefinido.

por ejemplo;

 router.post('/newpost', ensureAuthenticated, createPost, upload.single('file'), async (req, res) =>{ console.log(req.body); } async function createPost(req, res, next){ console.log(req.body); next(); }

cuando se ejecuta la función createPost, registra req.body como indefinido. pero cuando req.body se registra dentro del router.post, se define.

¿Es algo que me estoy perdiendo? o es esto simplemente no es posible de hacer.

También me aseguré de haber incluido bodyparser y haberlo inicializado antes de mis rutas.

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

0

bueno, acabo de probar y todo funciona bien, con mi sugerencia en el comentario

aquí está el contenido de mi prueba:

mi index.js

 const express = require('express') const router = express.Router() const app = express() const PORT = process.env.PORT || 3002 app.use(express.json()) const createPost = (req, res, next) => { console.log('createPost', req.body) next() } router.post('/newpost', createPost, (req, res) => { console.log('/nextpost', req.body) res.json({ message: 'ok' }) }) app.use('/', router) app.listen(PORT, () => { console.log( `server ready at http://localhost:${PORT}` ) })

y un archivo de cliente REST simple

 @HOST = http://localhost:3002 POST {{HOST}}/newpost Content-Type: application/json { "fname": "Bruno", "lname": "Alexandre", "nick": "balexandre" }

y el resultado es

 ❯ node .\index.js server ready at http://localhost:3002 createPost { fname: 'Bruno', lname: 'Alexandre', nick: 'balexandre' } /nextpost { fname: 'Bruno', lname: 'Alexandre', nick: 'balexandre' }

y la respuesta de la llamada

 HTTP/1.1 200 OK X-Powered-By: Express Content-Type: application/json; charset=utf-8 Content-Length: 16 ETag: W/"10-/VnJyQBB0+b7i4NY83P42KKVWsM" Date: Tue, 26 Jan 2021 19:59:21 GMT Connection: close { "message": "ok" }

captura de pantalla (haga clic para ver la imagen completa)

ingrese la descripción de la imagen aquí


Advertencia

asegúrese de pasar Content-Type: application/json en su solicitud POST , recuerde que le dijo a Express que quería que el cuerpo se analizara como .json() , así que asegúrese de que sepa que está pasando json como el cuerpo de la solicitud

un poco más de información... el req.body solo está undefined si no uso el analizador, como:

ingrese la descripción de la imagen aquí


Agregado

un repositorio de GitHub con solución funcional > https://github.com/balexandre/so65907925

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