Express.js – How to check if headers have already been sent?

I am writing a library which may set headers. I want to give a custom error message if headers have already been sent, instead of just letting it fail with the “Can’t set headers after they are sent” message given by Node.js. So how to check if headers have already been sent?


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;

Source: stackoverflow
The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .