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

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

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

fs.exists() и fs.existsSync()

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

4b9b3361

Ответ 1

Вы можете использовать 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() не рекомендуется. Это вводит условие гонки, поскольку другие процессы могут изменять состояние файла между двумя вызовами. Вместо этого пользовательский код должен открывать/читать/записывать файл напрямую и обрабатывать возникшую ошибку, если файл недоступен.

Ответ 2

Вы можете добавить

var f;

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

  // ....
}

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

Ответ 3

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

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

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

Ответ 4

node documentatió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
}

Ответ 5

Я считаю, что пакет fs-access устарел, иначе вы можете использовать:

path-exists.

file-exists.

Intracutions (путь-существует):

npm install path-exists --save

const myFile = '/my_file_to_ceck.html';
const exists = pathExists.sync(myFile);
console.log(exists);

Intracutions (файл существует):

npm install file-exists --save


const fileExists = require('file-exists');
const myFile = '/my_file_to_ceck.html';
fileExists(myFile, (err, exists) => console.log(exists))

NPM Link: путь существует

NPM ссылка: файл существует