Ich schreibe eine Bibliothek, die Header setzen kann. Ich möchte eine benutzerdefinierte Fehlermeldung ausgeben, wenn bereits Header gesendet wurden, anstatt sie nur mit der Meldung "Header können nach dem Senden nicht festgelegt werden" von Node.js fehlschlagen zu lassen. Wie kann man also überprüfen, ob bereits Header gesendet wurden?
javascript
node.js
express
response-headers
Powerboy
quelle
quelle
Antworten:
BEARBEITEN: Ab Express 4.x müssen Sie res.headersSent verwenden. Beachten Sie auch, dass Sie setTimeout möglicherweise vor dem Überprüfen verwenden möchten, da es nicht unmittelbar nach einem Aufruf von res.send () auf true gesetzt wird. Quelle
Einfach: Die Antwortklasse von Connect bietet eine öffentliche Eigenschaft "headerSent".
res.headerSent
ist ein boolescher Wert, der angibt, ob die Header bereits an den Client gesendet wurden.Aus dem Quellcode:
/** * 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
quelle
headersSent
nichtheaderSent
Node unterstützt
res.headersSent
diese Tage, also könnten / sollten Sie das nutzen. Es ist ein schreibgeschützter Boolescher Wert, der angibt, ob die Header bereits gesendet wurden.if(res.headersSent) { ... }
Siehe http://nodejs.org/api/http.html#http_response_headerssent
Hinweis: Dies ist die bevorzugte Methode im Vergleich zu der älteren Connect-Eigenschaft "headerSent", die Niko erwähnt.
quelle
Andere Antworten verweisen auf Node.js- oder Github-Websites.
Unten finden Sie Informationen von der 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 });
quelle