Routen-error: Fehler: nicht festlegen Können-Header, nachdem Sie gesendet werden

Gut, nachdem ich gelesen habe viele threads über dieses ich beginne zu stagnieren. Der Fehler ist das beliebte Error: Can't set headers after they are sent.

Die beste Antwort ist hier aber, ich haben Sie keine sich wiederholenden Funktionen oder zweimal ausgeführt Rückrufe (zumindest nicht dass ich wüsste), es ist nur eine standard-base-rest-API.

Full-trace-Protokoll:

/home/nano/Dev/JS/OMI/node_modules/mongoose/lib/utils.js:413
        throw err;
              ^
Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (http.js:689:11)
    at ServerResponse.header (/home/nano/Dev/JS/OMI/node_modules/express/lib/response.js:666:10)
    at ServerResponse.send (/home/nano/Dev/JS/OMI/node_modules/express/lib/response.js:146:12)
    at ServerResponse.json (/home/nano/Dev/JS/OMI/node_modules/express/lib/response.js:235:15)
    at Promise.<anonymous> (/home/nano/Dev/JS/OMI/app/routes/clientes.js:19:11)
    at Promise.<anonymous> (/home/nano/Dev/JS/OMI/node_modules/mongoose/node_modules/mpromise/lib/promise.js:172:8)
    at Promise.emit (events.js:95:17)
    at Promise.emit (/home/nano/Dev/JS/OMI/node_modules/mongoose/node_modules/mpromise/lib/promise.js:84:38)
    at Promise.reject (/home/nano/Dev/JS/OMI/node_modules/mongoose/node_modules/mpromise/lib/promise.js:111:15)
    at Promise.error (/home/nano/Dev/JS/OMI/node_modules/mongoose/lib/promise.js:95:15)

Sowieso, mein code ist einfach:

index.js:

"use strict";

var express = require('express'),
    router  = express.Router();

var clientes = require('./clientes');
var items    = require('./items');

router.route('/clientes')
  .post(clientes.crear)
  .put(clientes.actualizar)
  .delete(clientes.borrar);

router.route('./items')
  .post(items.crear)
  .put(items.actualizar)
  .delete(items.borrar);

module.exports = router;

clientes.js

Hinweis: reqHelper ist meine eigene Funktion zu gehen, durch erf.body-Objekt, für die jetzt deaktiviert ist.

"use strict";

//instancias de modelos
var Cliente = require('../models/models').Cliente;
//var reqHelper = require('./util');

var clientes = {

  crear: function (req, res) {
    var nuevoCliente = {
      _id: req.body._id,
      nombre: req.body.nombre,
      direccion: req.body.direccion,
      telefono: req.body.telefono
    };

    Cliente.create(nuevoCliente, function (err, cliente) {
      if (err) res.json({status: 500, error: err});
      res.json({ status: 500, cliente: cliente });
    }); //fin Cliente.create
  }, //fin crearCliente

  actualizar: function(req, res) {
    var ci = req.body._id;

    var clienteData = {};
    //reqHelper(req.body, clienteData);

    Cliente.update({ _id: ci }, clienteData, function(err, cliente) {
      if (err) res.json({status: 500, error: err});
      res.json({ status: 200, cliente: cliente });
    }); //fin Cliente.update
  }, //fin actualizarCliente

  borrar: function(req, res) {
    Cliente.remove({ _id: req.body._id }, function(err) {
      if (err) res.json({status: 500, error: err});
      res.json({ status: 200, msg: 'Cliente borrado' });
    });
  }, //fin borrarCliente
}; //fin actions

module.exports = clientes;

items.js

"use strict";

var Item = require('../models/models').Item;
//var reqHelper = require('./util');

var items = {
  crear: function(req, res) {
    var nuevoItem = {
      _id: req.body._id,
      descripcion: req.body.descripcion,
      costo: req.body.costo,
      precioMin: req.body.precioMin,
      precioMax: req.body.precioMax,
      existencia: req.body.existencia,
      disponible:req.body.disponible
    };

    Item.create(nuevoItem, function(err, item) {
      if (err) res.json({status: 500, error: err});
      res.json({ status: 200, item: item });
    });
  }, //fin crear

  actualizar: function(req, res) {
    var itemData = {};
    var itemId = req.body._id;  

    //reqHelper(req.body, itemData);

    Item.update({_id: itemId}, itemData, function(err, item) {
      if(err) res.json({status: 500, error: err});
      res.json({status: 200, token: item});
    }); //fin Item.update
  }, //fin actualizar

  borrar: function(req, res) {
    Item.remove({_id: req.body._id}, function(err){
      if(err) res.json({status: 500, error: err});
      res.json({ status: 200, msg: 'Item removido' });
    });
  }, //fin borrar
}; //fin items

module.exports = items;
  • Könntest du ein vollständiges Fehler-stack-trace ?
  • Was endpoint fordern Sie, dass die Fehlermeldung erhält? Error: Can't set headers after they are sent der Regel bedeutet, Sie haben einen Fehler im control flow irgendwo.
  • bearbeitet! Hinzugefügt fulltrace.
InformationsquelleAutor Nano | 2014-12-16
Schreibe einen Kommentar