2013-11-27 6 views
0

Я работаю над учебным пособием по обучению, и застрял в вопросе, поэтому мне нужна ваша помощь, поскольку программное обеспечение не предоставляет достаточно подробных ответов.Ошибка обратного вызова

Я нахожусь на шаге «сделайте его модульным», который просит разделить код на модули. Мой модуль:

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)

FAIL

Но я использую эти линии. Что я делаю не так?

EDIT: Вызывающий модуль состоит в следующем: вар мод = требуется ('./ подмодуль');

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

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

Возможно, я должен был поймать ошибку или объявить ее и перейти к моду?

+0

Ношение моей угадывающей шляпы, но будет ли полутолк в конце справки о возврате в этом случае? –

+0

Обычно, если вы не используете фигурные скобки для структурирования своего кода, чтобы 'return' находился в той же строке, что и' if'. Возможно, это так. – Andy

+0

Спасибо за ответы, но ни один из них не изменил результат. Я обновляю свой вопрос с помощью нового кода. –

ответ

1

callback не определено, поэтому вы не можете назвать его как функцию. Я не уверен, что правильный код, с помощью я подозреваю, что изменение на первую линию:

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

исправит вашу проблему.

Смежные вопросы