Подтвердить что ты не робот

Node - Проверьте, существует ли каталог

Это должно быть довольно простым ответом. Я бы надеялся, однако это меня озадачило - может быть, сегодня я смотрю на слишком много кода!

Я пытаюсь сделать простой оператор if, который проверяет, существует ли папка. Если папка не существует, сделайте ее, если это произойдет, удалите содержимое.

Проблема, с которой я столкнулась, заключается в том, что если каталог не существует, то обратный вызов (статистика) имеет значение undefined. С 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();
        }
      });

Любая помощь в том, как это сделать, будет оценена

4b9b3361

Ответ 1

Сначала проверьте 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();
  }
});

Ответ 2

вам нужно проверить, существует ли статистика перед выполнением! stats.isDirectory()