Подтвердить что ты не робот

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

};
4b9b3361

Ответ 1

Ваше приложение терпит крах, потому что вы не переносите fs.statSync в блок try/catch. Функции синхронизации в node не возвращают ошибку, как это было бы в их версиях async. Вместо этого они бросают свои ошибки, которые нужно поймать.

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

Если ваше приложение не требует, чтобы эта операция была синхронной (блокируйте дальнейшее выполнение до завершения этой операции), я бы использовал версию async.

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