2016-03-07 4 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(); 
     } 
     }); 

Любая помощь на том, как это было бы оценено

+0

Проверьте ваш 'err' _first_. Вероятно, вы столкнулись с ошибкой, если 'stats'' undefined'. – Oka

+0

1. Сначала вы должны проверить наличие ошибок. 2. Если он не существует, статистика не определена – baao

+0

Извинения, я только что понял, что, когда я попал в submit, так что я отредактировал свой вопрос – K20GH

ответ

27

Проверить err первый. Затем проверьте 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

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