Задать вопрос
andreyka_g
@andreyka_g

Как починить: Error: EPERM, lstat 'e:\System Volume Information' at Error (native)?

Всем привет! Пытаясь написать приложение для поиска файлов на компьютере столкнулся с такой ошибкой
Error: EPERM, lstat 'e:\System Volume Information' at Error (native)

Приложение пишется с помощью node-webkit и модулем node-findit. Для реализации поиска нужно задать корень файловой системы (ну или диска, для начала).
Полный js код выглядит так:
var find = require('findit');
var finder = require('findit')('/'); // тут я и задаю корень. тут-то и выдается ошибка
var path = require('path');
finder.on('directory', function (dir, stat, stop) {
    var base = path.basename(dir);
    if (base === '.git' || base === 'node_modules' || base === '.sass-cache' ) stop() //base === 'System Volume Information' - не помогло
    else console.log(dir + '/')
});
var files = [];
var wh = $('.search').val(); // .search - поле, куда вводится искомый файл
var rx = new RegExp(wh, "g"); // регулярка для поиска по фрагменту
finder.on('file', function (file, stat) {
    files.push(file);
});
$('.js-find').click(function() {
	for(var i = 0; i < files.length; i++) {
		if(files[i].match(rx)) console.log(files[i]); // найденные файлы выводятся в консоль
	}
});

Я так понимаю, что у меня закрыт доступ к папке "System Volume Information", которая в свою очередь занимается восстановлением системы, но даже обход в условии не помогает. Открывать доступ не считаю правильным, так как приложение требуется запускать на разных компьютерах.
  • Вопрос задан
  • 687 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
По той ссылке, что Вы дали и лежит решение, т.к. на венике могут встречаться файлы и каталоги с разными правами доступа, то нужно выделять из общего потока ошибок EPERM и игнорировать их. Полное игнорирование ошибок: finder.on('error', function (err) {}); Если глушить только EPERM то наверно так:
finder.on('error', function (err) {
    if (err.code !== 'EPERM') finder.stop();
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы