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

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

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 Relatório

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