最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - node.js Error: read ECONNRESET - Stack Overflow

programmeradmin0浏览0评论

I m running an Express 4 application, and I added some logic to router:

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' });
        }
    });
});

And added coressponding button to start index page, that send ajax to that '/pars' endpoint:

...
<button id="btn">Parse Data</button>

  <script>
      $( document ).ready(function() {

          $('#btn').click(function () {
              $.get(
                      "/pars",
                      onAjaxSuccess
              );
          });
          function onAjaxSuccess(data) {
              alert(data);
          };
      });
</script>

So all works fine and I sucesfully reloading page and downloading files from ftp using 'jsftp' module, but after some time (it may be 30 sec or 2 minutes ) I got error which crash all my app:

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)

I found similar problem at Node js ECONNRESET

And added this 'catching' code to my app.js:

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

Now app doesnt crashes, but spams that error from time to timeto my log, and all logic works fine.

I think issue can be in 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);
        }
    });

Maybe somebody can help me how I can fix that problem?

I m running an Express 4 application, and I added some logic to router:

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' });
        }
    });
});

And added coressponding button to start index page, that send ajax to that '/pars' endpoint:

...
<button id="btn">Parse Data</button>

  <script>
      $( document ).ready(function() {

          $('#btn').click(function () {
              $.get(
                      "/pars",
                      onAjaxSuccess
              );
          });
          function onAjaxSuccess(data) {
              alert(data);
          };
      });
</script>

So all works fine and I sucesfully reloading page and downloading files from ftp using 'jsftp' module, but after some time (it may be 30 sec or 2 minutes ) I got error which crash all my app:

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)

I found similar problem at Node js ECONNRESET

And added this 'catching' code to my app.js:

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

Now app doesnt crashes, but spams that error from time to timeto my log, and all logic works fine.

I think issue can be in 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);
        }
    });

Maybe somebody can help me how I can fix that problem?

Share Improve this question edited May 23, 2017 at 12:26 CommunityBot 11 silver badge asked Jul 19, 2015 at 12:10 MeetJoeBlackMeetJoeBlack 2,92410 gold badges42 silver badges70 bronze badges 1
  • 2 Theoretically, when you finished to download file from ftp, connection itself still stays opened. Then, the server closes this connection after some timeout because of inactivity. Try to open/close connection manually after you did finished working with ftp. Or maybe send some "idle" mands to ftp server to prevent connection closing, if you really need connection to be opened for a long time... – Alexander R. Commented Jul 19, 2015 at 14:16
Add a ment  | 

1 Answer 1

Reset to default 2

depends on the error info:

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)

it's caused by TCP connection. if the underlying socket receive a 'error' event, but no 'error' event listener, it will propagate and crash you process.

check your http server, add error event listener to it.

for example:

var server = http.createServer(function(request, response){ ... ... });

server.on('error', function(err) { ... ... });

if you want to catch the error from client, you can listener 'clientError' event.

发布评论

评论列表(0)

  1. 暂无评论