2017-09-12 9 views
-1

ich verwende das Modulexpress-Formidable "Kann Header nicht festlegen, nachdem sie gesendet werden."

formidable äußern, wenn ich eine Seite 2 Mal, dass ich laden, die auf Konsole

GET /users 304 6.948 ms - - 
GET /users 304 213.344 ms - - 
Error: Can't set headers after they are sent. 
at validateHeader (_http_outgoing.js:489:11) 
at ServerResponse.setHeader (_http_outgoing.js:496:3) 
at ServerResponse.header (/home/neolinux/Encoding-Service/encode-service/node_modules/express/lib/response.js:730:10) 
at ServerResponse.contentType (/home/neolinux/Encoding-Service/encode-service/node_modules/express/lib/response.js:558:15) 
at ServerResponse.send (/home/neolinux/Encoding-Service/encode-service/node_modules/express/lib/response.js:145:14) 
at done (/home/neolinux/Encoding-Service/encode-service/node_modules/express/lib/response.js:967:10) 
at Object.exports.renderFile (/home/neolinux/Encoding-Service/encode-service/node_modules/pug/lib/index.js:422:12) 
at View.exports.__express [as engine] (/home/neolinux/Encoding-Service/encode-service/node_modules/pug/lib/index.js:465:11) 
at View.render (/home/neolinux/Encoding-Service/encode-service/node_modules/express/lib/view.js:127:8) 
at tryRender (/home/neolinux/Encoding-Service/encode-service/node_modules/express/lib/application.js:640:10) 

dies mein app.js ist

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 


var index = require('./routes/index'); 
var users = require('./routes/users'); 

const util=require("util"); 
var app = express(); 

const formidable = require('express-formidable'); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'pug'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 

app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use(formidable({ 
    uploadDir: path.join(__dirname, '/Upload'), 
})); 

app.use('/', index); 
app.use('/users', users); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handler 
app.use(function(err, req, res, next) { 
    // set locals, only providing error in development 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    // render the error page 
    res.status(err.status || 500); 
    res.render('error'); 
}); 

module.exports = app; 

Sie müssen jetzt, wenn ich remove formidable Ich habe den Fehler nicht. Irgendeine Idee ?

v 4.5 Knoten v8

den nächsten Text nicht lesen ausdrücken, das ist nur für die Stackoverflow Fehler entfernen !!! Ich weiß nicht, wie ich weitere Informationen für dieses Problem hinzufügen kann.

Lorem ipsum dolor sit amet, konsectetur adipiscing elit, sed do eiusmod tempor incididant ut labore et dolor magna aliqua. En en en ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ven ul ul ul ul ul ul ul ul ul ul ul ul ul ul ul Duis aure irure dolor in represenderit in voluptate velit esser cillum dolores eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat nicht proident, sunt in officia deserunt culpa qui mollit anim id est laborum

Sed ut perspiciatis unde omnis iste natus Fehler sitzen voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi Architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sitzen sitzen auf dem Boden mit dem Auto, sed quia consequintur magnic dolores eos qui ratione voluptatem sequi nesciunt. Nue porro quisquam est, qui dolorem ipsum quia dolor sit amét, consectetur, adipisci velit, sé quia non numquam eius modi temporà incidant ut labor et et magnam aliquam quaerat voluptatem. En en Ut Ut Ut ven ven Ut ven Ut ven ven ven ven ven ven ven ven Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut Ut,,,,,,,,,,,,,,,,,,,,,, Quis autem vel eum iure reprehenderit qui in ea voluptate velit Esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur

Antwort

0

Es gibt eine Lösung, Express-formidable haben in Middleware-Version problème,

dort sind zwei von jedem Ereignishandler, was bedeutet, dass jedes Ereignis zweimal behandelt wird, was zu zwei next() Aufrufen führt und daher eine Ausnahme bezüglich der Header zu spät gesetzt wird.

die Lösung in app.js:

const formidable = require('formidable'); 
app.use(function (req, res, next) { 
    var form = new formidable.IncomingForm({ 
     encoding: 'utf-8', 
     uploadDir: path.join(__dirname, '/Upload'), 
     multiples: true, 
     keepExtensions: true 
    }) 
    form.once('error', console.log) 
    form.parse(req, function (err, fields, files) { 
     Object.assign(req, {fields, files}); 
     next(); 
    }) 
}) 
app.use('/', index); 
Verwandte Themen