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

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

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

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

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

如果你的应用程序不要求这个操作是同步的(阻止进一步的执行,直到这个操作完成),那么我会使用asynchronous版本。

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