Javascript 如何解决readstream文件上的forEach错误?
当我在forEach之后调用Javascript 如何解决readstream文件上的forEach错误?,javascript,node.js,Javascript,Node.js,当我在forEach之后调用aysncFiles()方法时,我看到下面的错误,当我们使用异步库时,如何解决readstream问题 基本上,只想从客户机中整理出与开始日期和结束日期匹配的文件 ctrl.js function readFile(searchObj,callback) { searchStr = searchObj.searchTxt; searchStartDate = searchObj.searchStartDate; searchEndDate =
aysncFiles()
方法时,我看到下面的错误,当我们使用异步库时,如何解决readstream
问题
基本上,只想从客户机中整理出与开始日期和结束日期匹配的文件
ctrl.js
function readFile(searchObj,callback) {
searchStr = searchObj.searchTxt;
searchStartDate = searchObj.searchStartDate;
searchEndDate = searchObj.searchEndDate;
var filesData = {};
var readStream;
if (searchObj.searchEnv === 'st') {
stDirectory.readDirectory(function(files){
filesData.logFiles = files;
var sortedFiles = [];
filesData.searchEnv = searchObj.searchEnv;
filesData.logFiles.forEach(function(file){
// move this in front of the loop
var fileDate = new Date( file.fileDate ).getTime();
var searchStartDate = new Date( searchStartDate ).getTime(); // add missing
var searchEndDate = new Date( searchEndDate ).getTime(); // `var`s
if (fileDate - searchStartDate > 0 && searchEndDate - fileDate > 0) {
console.log('File Date',file);
sortedFiles.push(file);
}
});
filesData.logFiles = sortedFiles;
console.log(filesData.logFiles);
asyncFiles(filesData); // Now being called
});
}
// loop through each file
function asyncFiles(filesData) {
async.eachSeries(filesData.logFiles, function (logfile,done) {
// read file
var results = [];
readStream = fs.createReadStream('./logs/' + filesData.searchEnv + '/'+ logfile.filename,'utf8')
readStream.pipe(split())
.on('data', function (line) {
done();
}
, function (err) {
if (err) {
console.log('error', err);
}
readStream.on('end',function(){
callback(matches);
});
matches = [];
});
}
}
错误
readStream.on('end',function(){
^
TypeError: Cannot read property 'on' of undefined
错误是什么?你有一堆,包括
search…
和matches
readStream
将不会初始化,当filedata.logFiles
为空时,将立即调用最终回调。data
事件会多次触发。您正在为目录中的每个文件创建一个新流。那真的不行。你们打算如何处理这些数据?我正在将数据发送回客户端进行UI显示