2017-01-23 99 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

相关问题