2013-11-27 33 views
0

我正在學習一個learnunode教程,並被困在一個問題,所以我想你的幫助,因爲該軟件沒有提供足夠詳細的答案。錯誤回調不被識別

我正在「使其成爲模塊化」,要求將代碼分離爲模塊。我的模塊:

module.exports = function (dir, filter, err){ 
    var fs = require("fs"); 
    var re = new RegExp('\\.' + filter + '$'); 

    fs.readdir(dir, function(err, list) { 
     if (err) return callback(err); 

     for (var i=0; i < list.length; i++) { 
      var name = list[i]; 

      if(name.match(re)) 
       console.log(list[i]); 
     }; 
    }); 
} 

但教程說,這是不正確與消息:

你額外的模塊文件:/home/user/learnunode/submodule.js不 不會出現傳回的從fs.readdir()

收到使用您的回調中下面的慣用Node.js的模式 fs.readdir()錯誤:如果(ERR)返回回調(ERR)

失敗

但我正在使用這些行。我究竟做錯了什麼?

EDIT: 主叫模塊是這樣的: VAR MOD =要求( './子模塊');

var mod = require('./submodule'); 

var folder = process.argv[2]; 
var extension = process.argv[3]; 
mod(folder, extension); 

也許我應該發現錯誤或聲明它並傳遞給mod?

+0

戴着我的猜測帽子,但在這種情況下,在返回語句結尾會出現一個分號? –

+0

通常情況下,如果你不使用大括號來構造你的代碼,那麼在'if'的同一行上有'return'。也許就是這樣。 – Andy

+0

感謝您的答案,但都沒有改變結果。我將用新代碼更新我的問題。 –

回答

1

callback是未定義的,所以你不能稱它爲一個函數。我不知道正確的代碼是什麼,由我懷疑,改變你的第一行:

module.exports = function (dir, filter, callback){ 

將解決您的問題。