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

161
Visualizações
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 Respostas
Responde à pergunta

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 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