2017-08-22 10 views
0

私はファイルリストを印刷するためにモジュールファイルを必要とするlearnyounodeの第6の問題を解決しようとしています。learnyounodeを渡すことができません:不正に使用されたコールバック関数ですか?

メインファイルprogram.js

var mymodule = require('./module.js'); 

mymodule(process.argv[2], process.argv[3], function(err, file){ 
    if(err){ 
     console.log(err); 
     return; 
    } 
    console.log(file); 
}); 

モジュールファイルmodule.js:ここでは私の二つのファイルです

var fs = require('fs'); 
var path = require('path'); 

var fileExt; 

module.exports = function(dir, ext, callback) { 
    fs.readdir(dir, function(err, files){ 
     if(err){ 
      callback(err); 
      return; 
     } 
     files.forEach(function(file){ 
      fileExt = path.extname(file).substring(1); 
      if(fileExt === ext){ 
       callback(null, file); 
      } 
     }); 
    }); 
} 

は、しかし、それはエラーがスローされます。

processors[i].call(self, mode, function (err, pass) {    
TypeError: Cannot read property 'call' of undefined 

私は何間違っている?

答えて

1

callbackには、一致するファイルがすべて含まれている配列を1回だけ呼び出す必要があります。あなたの場合、一致するファイルの場合は、に一度callbackと電話しています。

+0

いいえ、ありがとうLarkin – shintaroid

+0

ところで、learnyounodeを離しておくと、実際に私の質問のようにnode.jsを使用できますか?または通常、コールバック関数は1回だけ呼び出されるべきですか? – shintaroid

+0

コールバックは一度しか呼び出されないのが普通です。これは、 'err、callback'パターンを使用したとき、ほとんどのNode開発者が期待するものだと思います。 –

関連する問題