【问题标题】:Error 'event handler' not 'handling' ECONNRESET错误“事件处理程序”不是“处理”ECONNRESET
【发布时间】:2020-09-01 13:31:39
【问题描述】:

我正在使用库请求发布数据,但我经常收到错误 ECONNRESET,即使我有一个“错误事件处理程序”。有时我的代码确实处理了错误,但在 N(似乎 N 是随机的)次之后它只是停止处理它并停止我的脚本。

我有一个循环:

request.defaults({'proxy': proxy}) 
request.post(url, {form:{data}})
 .on('error',    function(err) { if(err === 'ECONNRESET') { console.log('ECONNRESET') }});

N次后我得到了

        throw er; // Unhandled 'error' event
        ^ Error: read ECONNRESET

我没有对我发布数据的服务器的完全访问权限。 我已经尝试过 longjohn,但它似乎不起作用。

如果这是一个重复的问题,我很抱歉,但我找不到任何明确的答案:(

【问题讨论】:

  • 尝试记录 err.messageerr.stack 可能会为您提供有关错误性质的更多信息。还有search the web, e.g.
  • @KooiInc 好吧,我认为我不能使用 err.message 因为错误本身没有被捕获(?)。但是当我的代码捕获它时,我得到:“隧道套接字无法建立,原因=读取 ECONNRESET”谢谢。
  • 如果on("error" , ...) 处理程序中的err 不是某种Error 对象,我会感到惊讶。
  • @KooiInc 好吧,我的意思是,还有什么可能?我有一个on("error", ...) 处理程序,但我仍然得到Unhandled 'error' event。我已经尝试删除这部分代码(这是它的主要部分),看看我是否仍然会收到此错误,但我没有收到错误。谢谢你的回答:)

标签: javascript node.js sockets request econnreset


【解决方案1】:

似乎.on('error', ...); 在 N 次后无法捕获 ECONNRESET,所以解决 if (afaik now) 的唯一方法是使用 process.on('uncaughtException', function(error) {})

我希望这对其他人有帮助:)

【讨论】:

    【解决方案2】:

    将使用 request 的所有代码包装在 try {} 子句中,然后是

    catch (error) {
      console.error (error)
    }
    

    根据您在评论中写的内容,您的代理服务器似乎有问题。没有它你能提出请求吗?如果是这样,请尝试。

    您也可以尝试使用名为curl 的命令行程序来发出类似的请求。 curl --verbose 会谈论它的作用,让你看到一些关于失败的细节。您没有向我们提供足够的信息来提供有关如何使用 curl 的详细建议。这可能有助于代理设置。 performing HTTP requests with cURL (using PROXY)

    【讨论】:

    • 我尝试使用try {},然后使用catch (error),但它没有改变任何东西,错误仍然没有得到处理,导致我的代码停止:(。遗憾的是,如果不使用代理我就无法做到这一点. 由于我使用了许多代理,有些工作有些不工作,一个或多个代理可能有问题。问题是.on('error', ...) 没有处理错误:/ 无论如何,谢谢你的帮助!跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 2011-03-22
    • 2015-03-23
    相关资源
    最近更新 更多