2012-04-28 10 views
1

再帰的にディレクトリを監視しようとしていますが、私は名前空間の問題を抱えています。node.jsでディレクトリを再帰的に監視するapi

私のコードは次のようになります。

for (i in files) { 
    var file = path.join(process.cwd(), files[i]); 
    fs.lstat(file, function(err, stats) { 
     if (err) { 
      throw err; 
     } else { 
      if (stats.isDirectory()) { 
       // Watch the directory and traverse the child file. 
       fs.watch(file); 
       recursiveWatch(file); 
      } 
     } 
    }); 
} 

私が唯一の最後のディレクトリstat'dを見ていることが表示されます。問題は、lstatコールバックが終了する前にループが終了したことだと思います。したがって、lstatコールバックが呼び出されるたびに、file =。これにどのように対処しますか?ありがとうございました! (ES5を仮定し、filesは、ファイル名のArrayである)

files.forEach(function(file) { 
    file = path.join(process.cwd(), file); 
    fs.lstat(file, function(err, stats) { 
    if (err) { 
     throw err; 
    } else { 
     if (stats.isDirectory()) { 
     // Watch the directory and traverse the child file. 
     fs.watch(file); 
     recursiveWatch(file); 
     } 
    } 
    }); 
}); 
+0

問題は、 'var x'はforループブロックにとってローカルではなく、コールバック' function'がクロージャを作成することです。また、 'function {}'を 'function(file){return function {}; }(ファイル) '。 –

答えて

2

あなたは可能性があります。

+0

それは私のために働くだろう。ありがとう! –

0

この目的のためにnode-watchパッケージがあります:使用して検討すべき

関連する問題