无法在发送后设置标头

时间:2017-01-23 05:50:29

标签: node.js

我真的无法解决我的代码中的问题,我得到了错误。我错过了什么吗? 错误:发送后无法设置标头。     在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);
})

1 个答案:

答案 0 :(得分:4)

您无法在next()之后使用res.json()。 当您致电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);
    })