【问题标题】:Cannot set headers after they are sent to the client nunjucks/express将标头发送到客户端 nunjucks/express 后无法设置标头
【发布时间】:2019-08-27 02:39:29
【问题描述】:

我将前端与节点服务器分开运行,每次更新 firebase 数据库时,节点客户端应用程序都会因以下错误而崩溃:

_http_outgoing.js:470

错误 [ERR_HTTP_HEADERS_SENT]:发送后无法设置标头 给客户

我的代码是一个非常基本的 api 调用

app.get("/:user/", cors(), (request, response, next) => {
  var user = request.params['user'];
  console.log(user);
  firebase.database().ref(`/master/${user}/`)
  .on('value', snapshot => {
      var obj = snapshot.val()
      var data = []
      var keys = []
      for (let a in obj) {
        data.push(obj[a])
        keys.push(a)
      }
      response.render('index.html', { data });
    });
})

【问题讨论】:

  • on 不会被多次调用吗?据我所知,response.render 关闭了请求,所以在下一个 value 事件中,响应已经关闭。
  • 你也可以发布cord()中间件吗?

标签: javascript node.js nunjucks


【解决方案1】:

使用.once 而不是.on 来获取快照的当前状态,而不是检索每个更新。 doc

【讨论】:

  • 谢谢,工作就像一个魅力!我总是忽略数据库逻辑并一直指责节点和其他库;)
猜你喜欢
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 2020-11-02
  • 2021-06-18
  • 2019-12-11
相关资源
最近更新 更多