关于node.js:fs.statSync如果文件不存在则抛出错误

fs.statSync throws error if file does not exist

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

1
2
3
4
5
6
7
8
9
10
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块中。 节点中的同步函数不会像在async版本中那样返回错误。 相反,他们抛出了需要捕获的错误。

1
2
3
4
5
6
7
try {
  var stats = fs.statSync(number);
  console.log('it exists');
}
catch(err) {
    console.log('it does not exist');
}

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

1
2
3
4
5
6
fs.stat(number, function(err, data) {
  if (err)
    console.log('it does not exist');
  else
    console.log('it exists');
});