2017-09-12 5 views
-1

私は私場合、コンソールexpress-Formidable「送信後にヘッダーを設定できません」

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) 

に、これは、あなたが今しなければならない私のapp.js

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; 

であることを私は持っているページ2時間をロードする際に、モジュールが手ごわい

を表現使います私はエラーがありません。何か案が ?

をv 4.5 ノードV8

は、次のテキストを読んでいない表現、これはstackoverflowのエラーを取り除くだけのためのものです!私はこの問題のための情報を追加する方法を知らない。

Lorem ipsum dol sit amet、consectetur adipiscing elit、Eidmod tempor incididunt ut labid、dolore magna aliqua。最小限に抑えて、練習や練習をすることができます。大気中に放出された栄養素は、栄養補助食品中に存在する。セッドはperspiciatisアンクルオムニISTE natusエラーがvoluptatem accusantium doloremque laudantium、totam REM aperiam、eaque IPSA quae AB​​ illo inventore veritatisら準architecto座るユタcupidatat非proident、culpaのQUIのofficia deseruntのmollitアニメーション識別ESTにsunt occaecat laborum

ExcepteurのSINT beatae vitae dicta sunt explicabo。 Nemo enim ipsam voluptatem quia voluptas aspernatur aut odit aut fugitには、それ以後の結果が出てきます。ネクストポロクスコムエスケープ、クイックビューア、クイックビューア、コンサチューセッツ、アイドルシティ、シドニー、シドニー、クイーンズランド州の写真その最小限の執行猶予期間、その執行猶予期間、執行猶予期間、 QUIS autem VEL EUM iure reprehenderit quiのEAでvoluptate velit ESSE QUAMニヒルmolestiae consequatur、ヴェルイルミネーションQUI dolorem EUM fugiatの現状voluptas NULLAのpariatur

答えて

0

解決策があり、表現-手ごわいが、ミドルウェアのバージョンで

をproblemeています各イベントハンドラの2つで、各イベントが2回処理され、2つのnext()コールが発生し、ヘッダの設定が遅すぎるという例外が発生します。

ソリューションは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); 
関連する問題