Express.js – 如何检查头是否已经发送?

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

简单:Connect的Response类提供了一个公共属性“headerSent”。

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

从源代码:

 /** * Provide a public "header sent" flag * until node does. * * @return {Boolean} * @api public */ res.__defineGetter__('headerSent', function(){ return this._header; }); 

https://github.com/senchalabs/connect/blob/master/lib/patch.js#L22

现在节点支持res.headersSent ,所以你可以/应该使用它。 它是一个只读的布尔值,表示头是否已经发送。

 if(res.headersSent) { ... } 

请参阅http://nodejs.org/api/http.html#http_response_headerssent

注意:与Niko提到的较旧的Connect'headerSent'属性相比,这是执行此操作的首选方式。