2016-03-07 52 views
10

これはかなり簡単な答えではありますが、私は困惑しています。ノード - ディレクトリが存在するかどうかを確認してください

フォルダが存在するかどうかを確認する単純なif文を実行しようとしています。フォルダが存在しない場合は、削除してコンテンツを削除します。

問題は、ディレクトリが存在しない場合、コールバック(統計情報)が定義されていないことです。 fs.existを使うとかなりシンプルになりますが、廃止されて以来、私はこれが将来的に証明されたことを確認したかったのです。

var seriesid = 5; 
     fs.stat("temp/" + seriesid, function (err, stats){ 
     if(!stats.isDirectory()){ 
      fs.mkdir("temp/" + seriesid); 
      console.log('Folder doesn\'t exist, so I made the folder ' + seriesid); 
      callback(); 
     } 
     else if (err != 'ENOENT') { 
      callback(err); 
     } 
     else { 
      // TODO: Folder exists, delete contents 
      console.log('Does exist'); 
      callback(); 
     } 
     }); 

これを実現する方法上の任意のヘルプはerr最初

+0

を確認してくださいあなたの 'err' _first_。 'stats'が' undefined'のときは、エラーが発生している可能性が非常に高いです。 – Oka

+0

1.最初にエラーをチェックする必要があります。 2.存在しない場合、統計情報は定義されていません – baao

+0

謝罪、私は私が提出したので、私は私の質問を編集したことに気づいた – K20GH

答えて

27

チェックをいただければ幸いです。そして、あなたは統計を行う前に存在しているかどうかを確認する必要がありisDirectory()

fs.stat("temp/" + seriesid, function (err, stats){ 
    if (err) { 
    // Directory doesn't exist or something. 
    console.log('Folder doesn\'t exist, so I made the folder ' + seriesid); 
    return fs.mkdir("temp/" + seriesid, callback); 
    } 
    if (!stats.isDirectory()) { 
    // This isn't a directory! 
    callback(new Error('temp is not a directory!')); 
    } else { 
    console.log('Does exist'); 
    callback(); 
    } 
}); 
+0

ああ、もちろん!完璧な意味合いを持つ。ありがとう – K20GH

+0

'fs'を直接扱いたくない場合は、https://www.npmjs.com/package/mkdirp – lasec0203

0

チェック!stats.isDirectory()

+0

https://github.com/sindresorhus/delも使用できます。 – Kristoffer

関連する問題