1. ホーム
  2. javascript

[解決済み] ETIMEDOUTエラーの対処方法について教えてください。

2022-01-30 13:21:32

質問

このコールで発生するetimedoutエラーはどのように処理するのですか?

 var remotePath = "myremoteurltocopy"
 var localStream = fs.createWriteStream("myfil");;
        var out = request({ uri: remotePath });
        out.on('response', function (resp) {
            if (resp.statusCode === 200) {
                out.pipe(localStream);
                localStream.on('close', function () {
                    copyconcurenceacces--;
                    console.log('aftercopy');
                    callback(null, localFile);
                });
            }
            else
                callback(new Error("No file found at given url."), null);
        })

もっと長く待つ方法はないのか、それとももう一度リモートファイルを要求するのか?

このエラーの原因は一体何なのでしょうか?タイムアウトだけですか?

解決方法を教えてください。

これは、リクエストの応答が一定時間内に受け取れない場合( timeout リクエストモジュールのオプション)。

基本的にそのエラーを最初にキャッチするためには、ハンドラを error そうすれば、処理されないエラーはもう投げられません。 out.on('error', function (err) { /* handle errors here */ }) . さらに詳しい説明 こちら .

ハンドラでは、エラーがETIMEDOUTであるかどうかをチェックし、独自のロジックを適用することができます。 if (err.message.code === 'ETIMEDOUT') { /* apply logic */ } .

再びファイルを要求したい場合は、次のようにすることをお勧めします。 ノードリトライ または ノードバックオフ モジュールを使用します。これによって、物事がずっとシンプルになります。

もっと長く待ちたい場合は timeout リクエストのオプション . 0に設定するとタイムアウトが発生しません。