Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express.js-如何检查邮件头是否已发送?_Javascript_Node.js_Express_Response Headers - Fatal编程技术网

Javascript Express.js-如何检查邮件头是否已发送?

Javascript Express.js-如何检查邮件头是否已发送?,javascript,node.js,express,response-headers,Javascript,Node.js,Express,Response Headers,我正在写一个可以设置标题的库。如果已经发送了头,我想给出一个自定义的错误消息,而不是让它失败,而使用Node.js给出的“发送后无法设置头”消息。那么如何检查邮件头是否已经发送?编辑:从express 4.x开始,您需要使用res.headersSent。还请注意,您可能希望在检查之前使用setTimeout,因为在调用res.send()之后,它不会立即设置为true 简单:Connect的响应类提供公共属性“headerSent” res.headerSent是一个布尔值,指示头是否已发送到

我正在写一个可以设置标题的库。如果已经发送了头,我想给出一个自定义的错误消息,而不是让它失败,而使用Node.js给出的“发送后无法设置头”消息。那么如何检查邮件头是否已经发送?

编辑:从express 4.x开始,您需要使用res.headersSent。还请注意,您可能希望在检查之前使用setTimeout,因为在调用res.send()之后,它不会立即设置为true

简单:Connect的响应类提供公共属性“headerSent”

res.headerSent
是一个布尔值,指示头是否已发送到客户端

从源代码:

/**
   * Provide a public "header sent" flag
   * until node does.
   *
   * @return {Boolean}
   * @api public
   */

  res.__defineGetter__('headerSent', function(){
    return this._header;
  });

节点现在支持
res.headersSent
,因此您可以/应该使用它。它是一个只读布尔值,指示头是否已发送

if(res.headersSent) { ... }


注意:与Niko提到的较旧的Connect“headerSent”属性相比,这是首选方法。

其他答案指向Node.js或Github网站

以下是Expressjs网站:


请注意,这与express中的不同,它似乎返回发送的标题。。而不是一堆标题是否已发送。我每天都很欣赏nodejs的简单概念。@powerboy节点目前支持res.headersSent本机发送,因此开始使用该属性可能是个好主意。从2014年5月17日起,senchalabs/connect反对res.headerSent,而支持res.headerSent。它是
headerSent
而不是
headerSent
powerboy您能接受另一个答案吗,因为当前接受的答案不再有效?请参阅@fiatjaf的评论。这应该是公认的答案,因为当前公认的答案不再有效。
app.get('/', function (req, res) {
  console.log(res.headersSent); // false
  res.send('OK');
  console.log(res.headersSent); // true
});