我希望这是一个相当简单的答案,但是这让我很困惑-也许我今天一直在盯着太多的代码!

我正在尝试做一个简单的if语句,该语句检查文件夹是否存在。如果该文件夹不存在,请将其删除,如果存在,则将其删除。

我遇到的问题是,如果目录不存在,则未定义回调(统计信息)。使用fs.exist会很简单,但是由于已弃用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。然后检查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();
  }
});

10-06 15:12