快递中的路由问题(已设置标题)

时间:2017-12-20 11:27:50

标签: node.js express

不一致,但有时我收到Can't set headers after they are sent错误。通常当我试图同时从数据库加载许多图像时。

Express甚至在调用路由器获取功能之前发送了404。这是路由器功能:

router.get('/:imageId', formparser, function (req, res) {
  imageStorage.fetch(req.params.imageId).then(function (img) {
    console.log(res._headerSent);
    if (img) {
      res.contentType(img.contentType);
      res.send(img.data);
    } else
      res.status(404).send();
  });
});


module.exports = router;

知道可能是什么原因?

更多信息:我认为我未能实现的布线可能会有些棘手。我正在使用5种不同的Router,并将它们添加到express应用中,如下所示:

app.use('/images', require('./routes/imageroutes'));
app.use('/course', require('./routes/courseroutes'));
app.use('/user', require('./routes/userroutes'));
app.use('/class', require('./routes/classroutes'));
app.use('/responses', require('./routes/responsesroutes'));

指针将不胜感激。

formparser.js中间件:

'use strict';

const formidable = require('formidable');

function parse(opts) {
  const form = new formidable.IncomingForm();
  form.multiples = true;
  Object.assign(form, opts);

  return (req, res, next) => {
    var fields = {};
    var files = {};
    form.parse(req, function (err, _fields, files) { fields = _fields; });
    form.onPart = function (part) {
      if (!part.filename) {
        // let formidable handle all non-file parts 
        form.handlePart(part);
      } else {
        var file = { mime: part.mime, filename: part.filename, buffer: null };
        var chunks = [];
        part.on('data', function (chunk) {
          chunks.push(chunk);
        });
        part.on('end', function () {
          file.buffer = Buffer.concat(chunks); // merge all the chunks to a single buffer
          chunks = null;
        })
        files[part.name] = file;
      }
    };
    form.on('end', function () {
      Object.assign(req, { fields, files });
      next();
    });
  };
}

module.exports = parse;
exports.parse = parse; // backword compatibility

1 个答案:

答案 0 :(得分:0)

问题是express-formidable包。 Issue #6 of express-formidable on GitHub中记录了相同的行为。

非常感谢那些指引我正确方向的人。