nodejs fs.exists()

Я пытаюсь вызвать fs.exists в сценарии узла, но я получаю ошибку:

TypeError: Object # не имеет метода 'exists'

Я попытался заменить fs.exists() на require('fs').exists и даже require('path').exists (на всякий случай), но ни один из них даже не перечисляет метод exists() с моей IDE. fs объявляется в верхней части моего скрипта как fs = require('fs'); и я использовал его ранее для чтения файлов.

Как я могу назвать exists()?

Ответ 1

Ваш запрос может быть неправильным, убедитесь, что у вас есть следующее

var fs = require("fs");

fs.exists("/path/to/file",function(exists){
  // handle result
});

Прочтите здесь документацию

http://nodejs.org/api/fs.html#fs_fs_exists_path_callback

Ответ 2

fs.access этого вы должны использовать fs.stats или fs.access. Из документации узла существует устаревшая (возможно, удаленная).

Если вы пытаетесь сделать больше, чем проверить существование, в документации говорится, что вы используете fs.open. Например,

fs.access('myfile', (err) => {
  if (!err) {
    console.log('myfile exists');
    return;
  }
  console.log('myfile does not exist');
});

Ответ 3

НЕ используйте fs.exists, пожалуйста, прочитайте его API-документ для альтернативного

это предлагаемая альтернатива: идти вперед и открывать файл, а затем обрабатывать ошибку, если таковая имеется:

var fs = require('fs');

var cb_done_open_file = function(interesting_file, fd) {

    console.log("Done opening file : " + interesting_file);

    // we know the file exists and is readable
    // now do something interesting with given file handle
};

// ------------ open file -------------------- //

// var interesting_file = "/tmp/aaa"; // does not exist
var interesting_file = "/some/cool_file";

var open_flags = "r";

fs.open(interesting_file, open_flags, function(error, fd) {

    if (error) {

        // either file does not exist or simply is not readable
        throw new Error("ERROR - failed to open file : " + interesting_file);
    }

    cb_done_open_file(interesting_file, fd);
});

Ответ 4

Здесь существует решение, которое использует синюю птицу для замены существующего.

var Promise = require("bluebird")
var fs = Promise.promisifyAll(require('fs'))

fs.existsAsync = function(path){
  return fs.openAsync(path, "r").then(function(stats){
    return true
  }).catch(function(stats){
    return false
  })
}

fs.existsAsync("./index.js").then(function(exists){
  console.log(exists) // true || false
})