0
私は、渡すパラメータとコールバック関数を持つscandir()
関数を呼び出しています。その関数が完了すると、私はそのコールバックを呼び出しますが、私はcallback is not a function
を取得します。私はどこに間違っているのか理解していない。どんな助けもありがたい。NodeJS提供のコールバック関数が 'コールバックは関数ではありません'を返します。
スクリプトファイル:
scan_dir(working_dir, function(items){
console.log('done');
dir_items = items;
console.log('items', dir_items);
});
機能ファイル:
var scan_dir_count = 0;
function scan_dir(path, callback){
scan_dir_count++;
fs.readdir(path, function(err, files){
files.forEach(function(item, index){
//console.log(index, item);
if (fs.lstatSync(path + '/' + item).isDirectory()){
files.push(path + '/' + scan_dir(path + '/' + item));
}
});
scan_dir_count--;
if (scan_dir_count == 0){
console.log('end');
callback(files);
}
});
}
感謝。
EDIT:4castレスポンスに更新されました。もはやすべてのエラーを返しますが、コールバック関数が発射されていないようです...
var scan_dir_count = 0;
function scan_dir(path, callback){
scan_dir_count++;
fs.readdir(path, function(err, files){
files.forEach(function(item, index){
//console.log(index, item);
if (fs.lstatSync(path + '/' + item).isDirectory()){
scan_dir(path + '/' + item, function(data){ files.push(item + '/' + data); });
}
});
scan_dir_count--;
if (scan_dir_count == 0){
console.log('end');
console.log(files);
callback(files);
}
});
}
あなたは 'scan_dir path + '/' + item) 'コールバックなし。 – 4castle
もちろん、意味があります。だから私は 'function(){}'を追加しましたが、ちょっと気分が悪いようですが、最終的なコールバックは起動しないようですが、 'console.log( 'end')'はコンソールです。 log( 'items'、item) 'はありません。 – Jam3sn
これは変です。おそらくコールバックに 'files.push'を入れたいと思うでしょう。 'scan_dir'は何も返しません。 – 4castle