node.js错误:读取ECONNRESET

node.js Error: read ECONNRESET

本文关键字:读取 ECONNRESET 错误 js node      更新时间:2023-09-26

我正在运行一个Express 4应用程序,我在路由器中添加了一些逻辑:

router.get('/pars', function(req, res, next) {
    fetcher.parseXml(function(err, result){ //download files from ftp server, it can takes from 10 sec to 1 minute
        if(err) {
            console.log("router " + err);
            res.render('index', { title: err });
        }else {
            console.log(result);
            res.render('index', { title: 'Download finish' });
        }
    });
});

并添加了相应的按钮来启动索引页,将ajax发送到'/pars'端点:

...
<button id="btn">Parse Data</button>
  <script>
      $( document ).ready(function() {
          $('#btn').click(function () {
              $.get(
                      "/pars",
                      onAjaxSuccess
              );
          });
          function onAjaxSuccess(data) {
              alert(data);
          };
      });
</script>

所以一切工作正常,我成功地重新加载页面和下载文件从ftp使用'jsftp'模块,但过了一段时间(它可能是30秒或2分钟),我得到了错误,崩溃我所有的应用程序:

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: read ECONNRESET
    at exports._errnoException (util.js:746:11)
    at TCP.onread (net.js:559:26)

我在Node js中发现了类似的问题ECONNRESET

并将此'catch '代码添加到我的app.js中:

process.on('uncaughtException', function (err) {
    console.error(err.stack);
    console.log("Node NOT Exiting...");
});

现在的应用程序不会崩溃,但垃圾邮件错误从我的日志中不时,所有的逻辑工作正常

我认为问题可以在ftp.get:

 Ftp.get(config.get("ftpDownloader:dir") + '/'+ fileName, __dirname + '/xml/' + fileName, function(hadErr) {
        if (hadErr){
            log.error('There was an error retrieving the file.' + hadErr);
            ftpDonwloadCallback(hadErr);
        }else{
            log.info("XML WAS DOWNLOADED: " + fileName);
            readFile(fileName, ftpDonwloadCallback);
        }
    });
也许有人能帮我解决这个问题?

取决于错误信息:

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: read ECONNRESET
    at exports._errnoException (util.js:746:11)
    at TCP.onread (net.js:559:26)

是由TCP连接引起的。如果底层套接字接收到'error'事件,但没有'error'事件监听器,它将传播并使进程崩溃。

检查你的HTTP服务器,添加错误事件监听器。

例如:

var server = http.createServer(function(request, response){ ... ... });
server.on('error', function(err) { ... ... });
如果你想从客户端捕获错误,你可以监听'clientError'事件。