Как обрабатывать ошибку ETIMEDOUT?

Как обрабатывать ошибку 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);
        })

Есть ли способ подождать дольше? или снова запросить удаленный файл?

Что именно может вызвать эту ошибку? Только время ожидания?

Ответы

Ответ 1

Это вызвано тем, что ваш запрос не получен в заданное время (по опции timeout request module).

В основном, чтобы сначала поймать эту ошибку, вам нужно зарегистрировать обработчик на error, поэтому необработанная ошибка больше не будет выбрана: out.on('error', function (err) { /* handle errors here */ }). Еще несколько объяснений здесь.

В обработчике вы можете проверить, является ли ошибка ETIMEDOUT, и применить свою собственную логику: if (err.message.code === 'ETIMEDOUT') { /* apply logic */ }.

Если вы хотите снова запросить файл, я предлагаю использовать node-retry или node-backoff. Это делает вещи намного проще.

Если вы хотите подождать дольше, вы можете установить timeout вариант запроса. Вы можете установить его на 0 без тайм-аута.

Ответ 2

Мы могли бы посмотреть объект ошибки для свойства code, в котором упоминается возможная системная ошибка, а в случае ETIMEDOUT, когда сетевой вызов завершается с ошибкой, действуют соответственно.

if (err.code === 'ETIMEDOUT') {
    console.log('My dish error: ', util.inspect(err, { showHidden: true, depth: 2 }));
}

Ответ 3

Как справиться с этой ошибкой ESOCKETTIMEOUT в почтальоне. В случае ошибки запроса появляется это сообщение об ошибке ESOCKETTIMEOUT и не продолжаются остальные тесты. Пожалуйста, смотрите скриншот как из коллекции, так и из консоли. введите описание изображения здесь