Я пытаюсь вызвать 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
})