我一直在学习node.js,我有这样的例子:
lesson6_module.js
var fs = require('fs');
module.exports = function (dir, regexFilter, callback) {
fs.readdir(dir, function(err, files) {
console.log('files.length ' + files.length);
if (!err) {
return callback(err, null);
}
var filteredFiles = [];
files.forEach(function(file) {
if (regexFilter.test(file)) {
filteredFiles.push(file);
}
});
console.log('filteredFiles.length ' + filteredFiles.length);
callback(null, filteredFiles);
});
};
lesson6.js
var lm6 = require('./lesson6_module.js');
var dir = process.argv[2];
var regex = new RegExp('\\.' + process.argv[3] + '$');
lm6(dir, regex, function(err, files) {
files.forEach(function(file) {
console.log(file);
});
});
当我运行它时,我得到这样的错误:
D:\devhome\nodejs\learn>node lesson6.js testdir txt
files.length 2
D:\devhome\nodejs\learn\lesson6.js:6
files.forEach(function(file) {
^
TypeError: Cannot call method 'forEach' of null
at D:\devhome\nodejs\learn\lesson6.js:6:9
at D:\devhome\nodejs\learn\lesson6_module.js:7:14
at Object.oncomplete (fs.js:107:15)
有什么问题?
答案 0 :(得分:0)
这是一个简单的错误(感谢@Sirko的评论,我抓住了它更快):
if (!err) {
return callback(err, null);
}
应该是:
if (err) {
return callback(err, null);
}