javascript - 如何处理 ETIMEDOUT 错误?

标签 javascript node.js http error-handling timeout

如何处理此调用的 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) {/* 在这里处理错误 */}).更多解释here .

在处理程序中,您可以检查错误是否为 ETIMEDOUT 并应用您自己的逻辑:if (err.message.code === 'ETIMEDOUT') {/* apply logic */}

如果您想再次请求该文件,我建议使用 node-retrynode-backoff模块。它使事情变得更简单。

如果你想等待更长时间,你可以设置timeout option of request yourself .您可以将其设置为 0 以表示不超时。

关于javascript - 如何处理 ETIMEDOUT 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23632914/

相关文章:

JavaScript/jQuery 试图使重置页面功能

javascript - 如何防止 iPhone ios 视频播放器跳过广告?

javascript - 删除电话号码中的+1node.js

c# - 如何在不写入磁盘或在内存中加载完整文件的情况下压缩文件并通过 HTTP 发送?

javascript - $ ('div:first' ).is (':first' ) 返回 false,为什么?

node.js - bcrypt 没有在 ubuntu 上安装

node.js - 无法使用 NodeJS/node-outlook 访问 Office 365

java - HTTP 响应无法识别的文本

spring - Aspectj - 拦截 HTTP 请求

javascript正则表达式用链接替换一些单词,但不在现有链接中