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

160
Views
El encadenamiento de middleware en next-connect falla con el controlador de errores

Tengo las siguientes dos funciones de middleware:

 function validateEmail(req, res, next) { console.log('email validation'); if (req.body.email && req.body.email.match(EMAIL_REGEX)) { console.log('email OK!'); return next(req, res); } else { console.log('email wrong'); res.json({ message: 'email invalid'}); } }
 function validateOriginHeader(req, res, next) { if (ORIGIN_WHITELIST.includes(req.headers.origin)) { console.log('header OK!'); return next(req, res); } else { console.log('header wrong!'); res.status(403); res.end('game over'); } }

Intento usarlos en la configuración de próxima conexión en pages/api , donde defino las opciones onError y onNoMatch:

 // factory fn returns new instance of newConnect with default setup function factory() { return nextConnect({ onError(err, req, res) { console.log('error?:', Object.keys(err)); res.status(500).json({ message: 'Internal Server Error' }); }, onNoMatch(req, res) { res.status(405).json({ message: `Method ${req.method} is not allowed.` }); }, }); }
 // pages/api/subscribe.js export default factory() .use(validateOriginHeader) .use(validateEmail) .post(async (req, res) => { try { const mailchimpRes = await mailchimp.subscribe(req.body); res.json(mailchimpRes); } catch (e) { res.json(e); } });

El problema:

Solo se ejecuta el primer middleware (imprimiendo 'header OK!' en la consola del servidor). La consola en validateEmail nunca se imprime. Cuando consuelo erro en el controlador onError definido en las opciones de próxima conexión, parece un objeto de solicitud, es decir. contiene el cuerpo con la carga del correo electrónico.

Llamar a la ruta da como resultado 500: se devuelve un error interno del servidor (como se define en el controlador onError).

¿Qué tiene de malo esta configuración?

versiones utilizadas:

"siguiente": "11.1.2" "siguiente conexión": "0.10.2"

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

0

Tienes que llamar a next() con argumentos vacíos en lugar de next(req, res) . Llamar a next() con un parámetro (s) da como resultado onError

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!