如果文件不存在,则fs.statSync会引发错误

时间:2015-10-28 19:47:33

标签: node.js fs

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

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');
    }

};

1 个答案:

答案 0 :(得分:36)

您的应用程序崩溃了,因为您没有将fs.statSync包裹在try/catch块中。节点中的同步功能不会像在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');
});