2017-08-22 15 views
-1

fsを使用してディレクトリ内のファイルのリストを返すモジュールを作成しようとしています。 console.logは期待通りにファイルの配列を返しましたが、最終的に返されるオブジェクトは未定義です。誰かがこれを私に説明することはできますか?私のノードのjsモジュール関数が未定義の結果を返す

モジュール:

exports.fileList = function() { 
    var fs = require('fs'); 
    var path = require('path'); 
    var dirPath = 'C:/Users/Desktop/Hotkey'; //directory path 
    var files = []; 
    fs.readdir(dirPath, function(err,list){ 
    if(err) throw err; 
    for(var i=0; i<list.length; i++){ 
     console.log(i + ':' + list[i]); //print the file 
     files.push(list[i]); //store the file name into the array files 
    } 
    console.log(files); // array here is displayed correctly 
    }); 

    return files; //return undefined object 
} 
+0

いくつのファイルがありますか?配列が返すファイルの数はいくつですか?私たちもそれらを見せてくれますか?それはコンソールに何を記録するのですか? –

+0

'console.log(i + ':' + list [i]);' - forループで何回印刷したのですか?また配列の値が未定義で印刷されましたか? –

+1

少なくとも空の配列を返すべきで、 'undefined'ではありません。 –

答えて

0

ノードJS readdirメソッドは非同期です:https://nodejs.org/api/fs.html#fs_fs_readdir_path_options_callback

コールバック関数内でループのために右後return filesラインを入れて、あなたは、ファイルへのアクセス権を持っている必要がありますが、オブジェクト。

+0

私の参照のためにそれを使用します – froggy

関連する問題