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

242
Vistas
No se pueden establecer encabezados después de que se envían

Estoy tratando de encontrar un error en mi código, y no encaja nada de otros temas.

Hay código app.js, que contiene el método get del módulo Express:

 app.get('/notes', notesController.all);

Hay código notesController.js, que se exporta al método de create app.js:

 exports.all = function (req, res) { Notes.all(function(err, docs){ if(err){ console.log(err); return res.sendStatus(500); } res.send(docs); }) };

En model este código:

 exports.all = function (cb) { db.get().collection('notes').find().toArray(function (err, docs) { cb(err,docs); }) };

La aplicación falla con este error:

 process.nextTick(function() { throw err; }); ^

Error: no se pueden establecer encabezados después de enviarlos. en ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:357:11) en ServerResponse.header (O:\OGPI6\node_modules\express\lib\response.js:725:10) en ServerResponse.json (O:\OGPI6\node_modules \express\lib\response.js:253:10) en ServerResponse.send (O:\OGPI6\node_modules\express\lib\response.js:158:21) en O:\OGPI6\controllers\notes.js:9 :13 en O:\OGPI6\models\notes.js:6:9 en handleCallback (O:\OGPI6\node_modules\mongodb\lib\utils.js:120:56) en O:\OGPI6\node_modules\mongodb\lib \cursor.js:860:16 en handleCallback (O:\OGPI6\node_modules\mongodb-core\lib\cursor.js:171:5) en setCursorDeadAndNotified (O:\OGPI6\node_modules\mongodb-core\lib\cursor. js:505:3)

En mi opinión, solo hay un error con "controlador" en la función de devolución de llamada:

 if(err){ console.log(err); return res.sendStatus(500); } res.send(docs);

Pero pensé que cuando ocurre un error, debe terminar la función y devolver sendStatus(500) , pero después de registrar un error en la consola, intenta devolver res.send(docs) y luego la aplicación falla porque está enviando el segundo encabezado. Se ve bien pero no funciona. ¿Alguien puede señalar de qué manera he fallado?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Utilice el parámetro "siguiente" en el middleware para que Express sepa que el propósito de este middleware se ha completado y que ya no es necesario ejecutar el código.

 exports.all = function (req, res, next) { Notes.all(function(err, docs){ if(err){ console.log(err); res.sendStatus(500); return next(); } res.send(docs); }) };

La ejecución del código después de la devolución puede deberse a la naturaleza asíncrona.

También puede usar el bloque else.

 exports.all = function (req, res, next) { Notes.all(function(err, docs){ if(err){ console.log(err); res.sendStatus(500); } else res.send(docs); }) };
about 4 years ago · Santiago Trujillo Denunciar

0

Cambia el código a

 if(err){ console.log(err); return res.status(500).send(err); } res.send(docs);
about 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