1. ホーム
  2. node.js

[解決済み] node.jsのres.end()はexpressで呼び出さなければならないのですか?

2023-01-13 13:43:12

質問

私はいくつかの エクスプレス アプリケーションを使用していますが、いくつかのモジュールでは res.end() がリクエストハンドラの最後( res.send または res.json など)、他では呼び出されない。

例えば

app.get('/test', function(req, res) {
    res.send('Test', 200);
});

または

app.get('/test', function(req, res) {
    res.send('Test', 200);
    res.end();
});

どちらのケースも動作しますが、多くのリクエストを実行したときに、リークやファイルディスクリプタの枯渇などが心配です。どちらがより正しいのでしょうか?

どのように解決するのですか?

ご質問の答えは「いいえ」です。を呼び出す必要はありません。 res.end() を呼び出す必要はありません。 res.send() . res.send() コール res.end() を呼び出します。

より引用 /lib/response.js の末尾にある res.send() 関数の終わりです。

  //. . .
  // respond
  this.end(head ? null : body);
  return this;
}