错误“事件处理程序”不是“处理”ECONNRESET

Posted

技术标签:

【中文标题】错误“事件处理程序”不是“处理”ECONNRESET【英文标题】:Error 'event handler' not 'handling' 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。我已经尝试删除这部分代码(这是它的主要部分),看看我是否仍然会收到此错误,但我没有收到错误。谢谢你的回答:) 【参考方案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', ...) 没有处理错误:/ 无论如何,谢谢你的帮助!跨度>

以上是关于错误“事件处理程序”不是“处理”ECONNRESET的主要内容,如果未能解决你的问题,请参考以下文章

无法在事件处理程序中访问 React 实例(this)[重复]

javafx事件处理程序返回错误,我不完全了解

类事件处理程序未检测是不是选中复选框

使用长度而不是事件处理程序通过 this 获取元素

单击删除会引发错误未知事件处理程序属性`onDelete`

如何检查单选按钮是不是已与“更改”事件处理程序绑定