2015-10-28 44 views
12

ファイルが存在するかどうかを確認しようとしています。それが存在しない場合は、コードを作成して続けるようにしたいと思います。次のコードを使用すると、ファイルが存在する場合は、「存在する」というメッセージが出力されます。それが存在しない場合、それは私のアプリをクラッシュさせます。ここに私のコードは次のとおりです。あなたがtry/catchブロックであなたのfs.statSyncをラップしていないので、ファイルが存在しない場合、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

あなたのアプリケーションがクラッシュしています。ノード内の同期機能は、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'); 
}); 
関連する問題