I am writing a library which may set headers. I want to give a custom error message if headers have already 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 sent?
相关问题
- Is there a limit to how many levels you can nest i
- How to toggle on Order in ReactJS
- void before promise syntax
- npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fs
- Keeping track of variable instances
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:
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
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.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.