2015-10-28 87 views
12

我試圖確定文件是否存在。如果它不存在,我希望我的代碼繼續,因此它將被創建。當我使用下面的代碼時,如果文件存在,它會打印出'它存在'。如果它不存在,它會崩潰我的應用程序。這裏是我的代碼:如果文件不存在,fs.statSync會拋出錯誤

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

}; 
+0

檢查這個問題,答案是相似的:http://stackoverflow.com/questions/4482686/check-synchronously-if-file-directory-exists-in-node-js –

+0

沒有幫助我。它不回答我問的問題。 – Mike

+0

你不能使用函數的異步版本嗎? https://nodejs.org/api/fs.html#fs_file_system –

回答

25

您的應用程序崩潰,因爲你不是在try/catch塊包裹你fs.statSync。節點中的同步功能不會像在其版本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'); 
}); 
相關問題