错误: 使用request模块在node.js中出现ECONNRESET读取错误

3

我尝试下载和解析一些大型的XML文件。这些文件来自一些联盟网站,它们目前没有一个合适的API。我使用nodejs的请求模块,但总是出现相同的错误。

Error: read ECONNRESET
at exports._errnoException (util.js:746:11)
at TCP.onread (net.js:559:26)

如果我在浏览器中加载相同的URL或者使用命令行中的curl,我会得到结果。

request('[my-url].xml', function(err, response, body){
    // I get the error here in err
});

有什么办法可以解决这个问题吗?谢谢!

1
这里有任何有用的答案吗?https://dev59.com/bGQm5IYBdhLWcg3w6Car - joews
1
你尝试过直接使用Node的http.request而不使用request模块吗? - thorn0
1
谢谢大家的建议,@thorn,我现在使用带有“Connection”:“keep-alive”选项的http.request,效果非常好,谢谢! - biancamihai
@biancamihai 这是在下载过程中还是之后发生的?我正在处理一个类似的问题,与使用request内部的jsdom有关。但是这些ECONNRESET异常发生在请求完成几分钟后。 - thorn0
@thorn 在我的情况下,这发生在下载过程中,但这是一个大文件...在我的情况下,使用相同的标头也适用于请求。 - biancamihai
1个回答

1

两个非常有用的故障排除工具:

另请参阅:

补充:

  • 我一定会鼓励您探索longjohnFiddler2或其他工具,以便对应用程序之间的HTTP级请求/响应进行故障排除。

  • 我注意到joews和我都引用了相同的Stack Overflow链接。 有用的提示:

    a. --abort-on-uncaught-exception node.js选项:它不仅提供更详细和有用的错误堆栈跟踪,还在应用程序崩溃时保存核心文件以便进行进一步调试。

    b. 我遇到了同样的问题,但我通过在server.listen之前放置server.timeout = 0;来缓解了这个问题。


谢谢您的建议,问题出在“Connection: keep-alive”上,使用这个参数已经解决了。 - biancamihai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接