错误“事件处理程序”不是“处理”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.message
和 err.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的主要内容,如果未能解决你的问题,请参考以下文章