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