2015-10-28 15 views
12

Ich versuche festzustellen, ob eine Datei existiert. Wenn es nicht existiert, möchte ich, dass mein Code fortfährt, damit er erstellt wird. Wenn ich den folgenden Code verwende, gibt die Datei aus, dass sie existiert, wenn sie existiert. Wenn es nicht existiert, stürzt es meine App ab. Hier ist mein Code:fs.statSync löst einen Fehler aus, wenn die Datei nicht existiert

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

Check diese Frage beantworten ist ähnlich: http://stackoverflow.com/questions/4482686/check-synchronously-if-file-directory-exists-in-node-js –

+0

das nicht hilft mich. Es beantwortet nicht die Frage, die ich gestellt habe. – Mike

+0

können Sie die asynchrone Version der Funktion nicht verwenden? https://nodejs.org/api/fs.html#fs_file_system –

Antwort

25

Ihre Anwendung abstürzt, weil Sie nicht Ihre fs.statSync in einem try/catch Block gewickelt wird. Sync-Funktionen im Knoten geben den Fehler nicht wie in ihren async-Versionen zurück. Stattdessen werfen sie ihre Fehler, die gefangen werden müssen.

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

Wenn Ihre App (Block weitere Ausführung, bis dieser Vorgang abgeschlossen ist) diese Operation nicht erforderlich synchron sein, dann würde ich die Asynchron-Version verwenden.

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