2017-01-23 8 views
1

ここで私のコード内で問題を解決できない場合は、エラーが表示されます。私は何かを忘れていますか? エラー:送信後にヘッダーを設定できません。 ServerResponse.OutgoingMessage.setHeaderで (_http_outgoing.js:356:11)送信後にカントがセットされたヘッダー

var express = require('express') 
var bodyParser = require('body-parser') 
var cors = require('cors') 
var users = require('./users.json') 
app = module.exports= express() 
app.use(bodyParser.json()) 
app.use(cors()) 
port = 3000 
var corsOptions={ 
    origin:'http://localhost:'+port 
} 
app.use(cors(corsOptions)) 
app.get('/api/users?',(req,res,next)=> { 
    var send; 
    if(req.query.language){ 
    function itsTrue(value) { 
     return value.language===req.query.language 
    } 
    send=users.filter(itsTrue) 
    } 
    else { 
    send = users} 
    res.status(200).json(users) 
    next() 
}); 
app.get('/api/users/:admin',function(req,res,next) { 
    var send; 
    if(req.params.admin){ 
    function itsTrue(value) { 
     //console.log(typeof value.type); 
     return value.type===req.params.admin 
    } 
    send=users.filter(itsTrue) 
    } 
    else { 
    send = users 
    } 
    console.log(send); 
    res.status(200).json(users); 
    next() 
}) 
app.get('/api/users/:id',function(req,res,next) { 
    var send; 
    var status; 
    for (var i = 0; i < users.length; i++) { 
    if(users[i].id == req.params.id){ 
     send = users[i] 
    } 
    } 

    send?status=200:status=400 
    console.log(send); 
    res.status(status).json(send) 
    next() 
}) 





app.listen(port,()=>{ 
    console.log("hello from port "+port) 
    // console.log(users); 
}) 

答えて

4

あなたはres.json()next()を使用傾けます。 res.json()に電話すると、応答はすでにエクスプレスサーバから送信されています。

var express = require('express') 
    var bodyParser = require('body-parser') 
    var cors = require('cors') 
    var users = require('./users.json') 
    app = module.exports= express() 
    app.use(bodyParser.json()) 
    app.use(cors()) 
    port = 3000 
    var corsOptions={ 
     origin:'http://localhost:'+port 
    } 
    app.use(cors(corsOptions)) 
    app.get('/api/users?',(req,res,next)=> { 
     var send; 
     if(req.query.language){ 
     function itsTrue(value) { 
      return value.language===req.query.language 
     } 
     send=users.filter(itsTrue) 
     } 
     else { 
     send = users} 
     res.status(200).json(users) 
     next() 
    }); 
    app.get('/api/users/:admin',function(req,res,next) { 
     var send; 
     if(req.params.admin){ 
     function itsTrue(value) { 
      //console.log(typeof value.type); 
      return value.type===req.params.admin 
     } 
     send=users.filter(itsTrue) 
     } 
     else { 
     send = users 
     } 
     console.log(send); 
     return res.status(200).json(users); 
    }) 
    app.get('/api/users/:id',function(req,res,next) { 
     var send; 
     var status; 
     for (var i = 0; i < users.length; i++) { 
     if(users[i].id == req.params.id){ 
      send = users[i] 
     } 
     } 

     send?status=200:status=400 
     console.log(send); 
     return res.status(status).json(send) 
    }) 





    app.listen(port,()=>{ 
     console.log("hello from port "+port) 
     // console.log(users); 
    }) 
+0

次はいつ使用しますか? – GoyaKing

+0

検証のためにミドルウェアを使用している場合や、結果が送信される前に複数回リクエストを処理する必要がある場合。 –

+0

私のエンドポイントのいくつかは、次の() – GoyaKing

関連する問題