node.js错误:读取ECONNRESET

我正在运行一个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' }); } }); }); 

并添加coresspondingbutton来启动索引页面,发送ajax到'/ pars'端点:

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

所以一切正常,我sucesfully重新加载页面和使用'jsftp'模块从ftp下载文件,但一段时间后(可能是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上发现类似的问题

并将这个“捕捉”代码添加到我的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连接引起的。 如果底层套接字收到“错误”事件,但没有“错误”事件监听器,则会传播并崩溃。

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

例如:

 var server = http.createServer(function(request, response){ ... ... }); server.on('error', function(err) { ... ... }); 

如果要从客户端捕获错误,则可以侦听“clientError”事件。