0
一貫していませんが、時々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
おそらく、ミドルウェアで起こっていることです。それはエラー(または何か)を送信し、何かをもう一度送信しようとするあなたのルートに続いて、エラーをスローします。 – alizahid
私はそう思っていましたが、使用しているミドルウェアのどれもが404を投げることはできないと思います:私は 'router.get'の下で' cookie-session'と 'express-formidable'(ここではformparser) – TastySpaceApple
を使用します。 'module.exports = router;'を持っていますか? – mast3rd3mon