fs.statSync 如果文件不存在则抛出错误

fs.statSync throws error if file does not exist

我正在尝试确定文件是否存在。如果它不存在,我希望我的代码继续,以便创建它。当我使用下面的代码时,如果文件存在,它会打印 'it exists'。如果它不存在,它会使我的应用程序崩溃。这是我的代码:

var checkDuplicateFile = function(){
    var number = room.number.toString();
    var stats = fs.statSync(number);
    if(stat){
        console.log('it exists');
    }else{
        console.log('it does not exist');
    }

};

您的应用程序正在崩溃,因为您没有将 fs.statSync 包装在 try/catch 块中。节点中的同步功能不会 return 像在 async 版本中那样的错误。相反,他们会抛出需要被捕获的错误。

try {
  var stats = fs.statSync(number);
  console.log('it exists');
}
catch(err) {
    console.log('it does not exist');
}

如果您的应用不要求此操作是同步的(阻止进一步执行直到此操作完成),那么我会使用异步版本。

fs.stat(number, function(err, data) {
  if (err) 
    console.log('it does not exist');
  else 
    console.log('it exists');
});