0

我一直在学习 node.js,我有这样的例子:

第6课_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);
  });
};

第6课.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)

怎么了?

4

1 回答 1

0

这是一个简单的错误(感谢@Sirko 的评论,我更快地抓住了它):

if (!err) {
  return callback(err, null);
}

应该:

if (err) {
  return callback(err, null);
}
于 2013-11-10T12:25:10.960 回答