2
我米运行的Express 4的应用程序,我加了一些逻辑路由器:node.js的错误:读ECONNRESET
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' });
}
});
});
并补充coressponding按钮开始索引页,即发送AJAX到“/收杆“端点:
...
<button id="btn">Parse Data</button>
<script>
$(document).ready(function() {
$('#btn').click(function() {
$.get(
"/pars",
onAjaxSuccess
);
});
function onAjaxSuccess(data) {
alert(data);
};
});
</script>
因此,所有工作正常,我sucesfully刷新页面,并使用从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
,并将此“醒目”的代码我app.js:
process.on('uncaughtException', function (err) {
console.error(err.stack);
console.log("Node NOT Exiting...");
});
现在应用犯规崩溃,但修建垃圾该错误可不timeto我的日志,所有的逻辑都可以正常工作。
我想问题可能在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);
}
});
也许有人可以帮我,我怎么能解决这个问题?
理论上,当你完成从ftp下载文件时,连接本身仍然保持打开状态。然后,服务器由于不活动而在超时后关闭此连接。尝试在使用ftp完成工作后手动打开/关闭连接。或者,也许发送一些“空闲”的命令到FTP服务器,以防止连接关闭,如果你真的需要连接打开很长一段时间... –