J'essaie de déterminer si un fichier existe. S'il n'existe pas, j'aimerais que mon code continue pour qu'il soit créé. Lorsque j'utilise le code suivant, si le fichier existe, il affiche qu'il "existe". S'il n'existe pas, il bloque mon application. Voici mon code:
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');
}
};
Votre application se bloque parce que vous n'encapsulez pas votre fs.statSync
dans un try/catch
bloquer. Les fonctions de synchronisation dans le nœud ne renvoient pas l'erreur comme elles le feraient dans leurs versions async
. Au lieu de cela, ils jettent leurs erreurs qui doivent être rattrapées.
try {
var stats = fs.statSync(number);
console.log('it exists');
}
catch(err) {
console.log('it does not exist');
}
Si votre application ne nécessite pas que cette opération soit synchrone (bloquez l'exécution jusqu'à ce que cette opération soit terminée), j'utiliserais la version asynchrone.
fs.stat(number, function(err, data) {
if (err)
console.log('it does not exist');
else
console.log('it exists');
});