web-dev-qa-db-fra.com

fs.statSync renvoie une erreur si le fichier n'existe pas

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

};
20
Mike

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