1

sendFile関数を使用してクライアントにファイルを送信するexpressjsサーバーがあります。関数のコールバックを使用して、エラーがいつ発生したかを確認します。sendFile が 304 で応答することを決定するたびに (私の場合は望ましい動作です)、そのコールバックが次のエラーで呼び出されるようです:

Error: Request aborted: sendFile error
    at Object._onImmediate (.../node_modules/express/lib/response.js:941:17)
    at processImmediate [as _immediateCallback] (timers.js:336:15)
 { [Error: Request aborted: sendFile error] code: 'ECONNABORT' }

ただし、これに関するドキュメントが見つかりません。このエラーをいつ無視するか、いつ反応するかを判断する方法を知りたいと思います。望ましい行動の副作用。

これは実際にsendFileが行うべきことですか? これに関するドキュメントはありますか?このエラーを他の ECONNABORT エラーと区別するにはどうすればよいですか?

4

1 に答える 1

3

response.statusCode はこの状態を検出するのに役立ちますが、これが他のエラーをキャッチするかどうかはわかりません。ドキュメントから変更された私の変更されたコードは次のとおりです

res.sendFile(filename, options, function (err) {
  if (err) {
    if (err.code === "ECONNABORT" && res.statusCode == 304) {
      // No problem, 304 means client cache hit, so no data sent.
      console.log('304 cache hit for ' + filename);
      return;
    }
    console.error("SendFile error:", err, " (status: " + err.status + ")");
    if (err.status) {
      res.status(err.status).end();
    }
  }
  else {
    console.log('Sent:', filename);
  }
于 2014-10-08T18:49:34.327 に答える