it-swarm.com.ru

Проверьте, существует ли файл в Gulp

Мне нужно проверить, существует ли файл в задании gulp, я знаю, что могу использовать некоторые функции узла из узла, их две:

fs.exists() и fs.existsSync()

Проблема в том, что в документации по узлу говорится, что эти функции устарели

29
Caio Kawasaki

Вы можете использовать fs.access

fs.access('/etc/passwd', (err) => {
    if (err) {
        // file/path is not visible to the calling process
        console.log(err.message);
        console.log(err.code);
    }
});

Список доступных кодов ошибок здесь


Использование fs.access() для проверки доступности файла перед вызовом fs.open(), fs.readFile() или fs.writeFile() не рекомендуется. Это вводит условие гонки, так как другие процессы могут изменять состояние файла между двумя вызовами. Вместо этого пользовательский код должен открывать/читать/записывать файл напрямую и обрабатывать возникшую ошибку, если файл недоступен.

40
Alexander

Вы могли бы добавить

var f;

try {
  var f = require('your-file');
} catch (error) {

  // ....
}

if (f) {
  console.log(f);
}
1
Raulucco

С 2018 года вы можете использовать fs.existsSync() :

fs.exists () устарела, а fs.existsSync () - нет. Параметр обратного вызова для fs.exists () принимает параметры, которые несовместимы с другими обратными вызовами Node.js. fs.existsSync () не использует обратный вызов.

Смотрите этот ответ для более подробной информации.

0
Jack Steam

Узел documentmentatión не рекомендует использовать stat для проверки, существует ли файл :

Использование fs.stat () для проверки существования файла перед вызовом fs.open (), fs.readFile () или fs.writeFile () не рекомендуется . Вместо этого пользовательский код должен открывать/читать/записывать файл напрямую и обрабатывать возникла ошибка, если файл недоступен.

Чтобы проверить, существует ли файл, не манипулируя им впоследствии, Рекомендуется использовать fs.access ().

Если вам не нужно читать или записывать файл, вы должны использовать fs.access, простой и асинхронный способ:

try {
	fs.accessSync(path)
	// the file exists
}catch(e){
	// the file doesn't exists
}

0
David Lemon