繁体   English   中英

Node.js Express.js Mongoose 错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头

[英]Node.js Express.js Mongoose Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

我有这个错误并尝试 evething,我读到“返回”可能是导致错误的原因之一,promise 可能是另一个原因,但正如您在上面的代码中看到的那样,代码中没有任何一个缺失。 在 console.log(docs) 中,它会正确返回文档。 任何人都可以有一些解决方案,tks

exports.databaseController = (req, res) => {
   const promise = Database.find({}).exec()

   promise
    .then(docs => {
      if (!docs) {
      throw new Error('docs not found')
     }
     console.log(docs)
     return res.status(200).json(docs)
     })
    .catch(err => {
    console.log(err)                      // not found
    return res.status(404).json({ err })  // return your error msg
  })
}

// app
const controllerDatabase = 
require('../controllers/database.controller')

module.exports = app => {
  app.use((req, res, next) => {
  res.header('Access-Control-Allow-Headers', 'x-access-token, 
       Origin, Content-Type, Accept')
  next()
 })

  app.get('/api/v1/database', 
     controllerDatabase.databaseController)
}

// server.js
require('./app/routes/database.routes')(app)

删除console.log 它会设置 header 为什么你第二次调用你得到错误

 console.log(res.json(docs)) // remove

或者,如果您需要 console.log 直接使用docs

 console.log(docs)

您已经在 console.log 中发送您的回复。 删除以下

console.log(res.json(docs));

这个错误将 go 消失。 如果您想控制台记录您的文档,请执行以下操作:

console.log(docs);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM