我是NodeJS的新手,我试图读取给定目录中的所有文件,然后使用下面的代码逐行打印出结果
var fs=require('fs'),fsf = require('fs'),lazy = require('lazy');
var fr;
var dir = '/path/to/dir';
fs.readdir(dir,function(err,files){
if (err) throw err;
files.forEach(function(file){
console.log(file);
fr = fsf.createReadStream(file);
//console.log(fr);
new lazy(fr).lines.forEach(function(line){
console.log(line.toString());
});
});
我收到以下错误
无法调用未定义的方法'toString' 任何指针都会非常感激!
答案 0 :(得分:0)
更新: - 实际上有两个问题
更正了两者,这里是重构代码
var fs=require('fs'),lazy = require('lazy');
var fr;
var dir = '/path/to/dir';
fs.readdir(dir,function(err,files){ //Get a listing of all the files in the dir
if (err) throw err;
files.forEach(function(file){
if(file.search('\\.md') != -1) { //Only read markdown files
console.log(file);
fr = fs.createReadStream(file);
new lazy(fr).lines.forEach(function(line){
if (typeof line != 'undefined'){ // Skip blank lines within the files
if ((line.toString().search('\\+') != -1)||(line.toString().search('@') != -1)){
console.log(line.toString());
}
}
});
}
});
});
代码似乎很好,并且正在与其他目录和其他计算机一起使用。经过一些调查后,目录中的.DS_Store隐藏文件似乎存在问题。我在OSX 10.9.4的Mac上尝试这个。我不是百分百肯定,但是现在这似乎是错误的可能原因。 谢谢!