Express.js - How to check if headers have already been sent?
Node supports the res.headersSent
these days, so you could/should use that. It is a read-only boolean indicating whether the headers have already been sent.
if(res.headersSent) { ... }
See http://nodejs.org/api/http.html#http_response_headerssent
Note: this is the preferred way of doing it, compared to the older Connect 'headerSent' property that Niko mentions.
EDIT: as of express 4.x, you need to use res.headersSent. Note also that you may want to use setTimeout before checking, as it isn't set to true immediately following a call to res.send(). Source
Simple: Connect's Response class provides a public property "headerSent".
res.headerSent
is a boolean value that indicates whether the headers have already been sent to the client.
From the source code:
/** * 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
Others answers point to Node.js or Github websites.
Below is from Expressjs website: https://expressjs.com/en/api.html#res.headersSent
app.get('/', function (req, res) { console.log(res.headersSent); // false res.send('OK'); console.log(res.headersSent); // true});