Как сделать, чтобы fs.access выполнялся синхронно?
Пытаюсь настроить задачу в gulp, и мне требуется проверить наличие файла перед выполнением действия. На просторах интернета я нашел fs.access, который для меня имеет несколько странноватую конструкцию, и применил его:
var ret = false;
//выполняется почему-то асинхронно
fs.access(target, function(error){
if (error) {
console.log("Файл не найден");
ret = true;
} else {
console.log('start less compile for ' + target);
}
});
console.log(ret);
if (ret)
return -1;
return gulp.src(_src_path)
.pipe(changed(_tgt_path))
.pipe(less({}))
.pipe(gulp.dest(_tgt_path));
Но я столкнулся с тем, что ret всегда равен false. А console.log("Файл не найден"); выполняется после console.log(ret);. То есть, насколько я понимаю fs.access создан, чтобы быть асинхронным. Но мне не нужно его асинхронное выполнение в данном контексте.
На просторах интернета так же я натыклся на метод fs.existsSync, но он сейчас находится под грифом deprecated, поэтому хочу его избежать (ввиду вероятного его упразднения в грядущих версиях ноды).
Так же натыкался на метод fs.stat, но насколько понял, то там я столкнусь с такой же проблемой, как и с fs.access.
Я так же пробовал с предварительным указанием async для function делать
await fs.access(target, function(error){
if (error) {
console.log("Файл не найден");
ret = true;
} else {
console.log('start less compile for ' + target);
}
});
но это меня выбросило на throw er; // Unhandled 'error' event. Собственно вопрос в сабже: как можно с помощью fs.access синхронно узнать, существует ли файл по указанному пути?