Какие файлы могут быть запущены fs.stat () без ошибок? - PullRequest
0 голосов
/ 19 мая 2019

Я получаю ошибки во многих файлах / папках в домашнем каталоге пользователя, когда пытаюсь перекатить каталог, используя приведенный ниже скрипт.

Все они имеют похожую форму, которую я поместил в объектздесь:

const enoent2 = { 
  error: 'no such file or directory',
  errno: -2,
  code: 'ENOENT',
  syscall: 'stat',
  path: '../../../Library/Containers/com.apple..NowPlayingWidgetContainer/Data/Documents/iChats' 
}

Я посмотрел на Node fs api здесь , но не могу найти квалификаторы, для которых вы можете вызывать fs.stat ().

Мне нужен способ запустить fs.stat () для этих файлов, чтобы мой скрипт работал правильно.

Как я могу остановить эти ошибки?

После дальнейшего анализа обнаруживается ~ 2000 ошибоквсе с формой ниже, за исключением изменений пути, однако все они имеют одинаковый корневой путь:

../../../Library/Containers/com.apple

enter image description here

Код:

// Libraries
const fs = require('fs');
const h = require('./helper');

// Start recursing here
const start = '../../../';

// API
getThings(start).then(() => {
  faults.paths.forEach((path)=>{
    console.log(path);  
  });
}).catch((err) => {
  console.log('Error Bubbled', err);
})

// Accesses the file system and returns an array of files / folders
async function getThings (folder) { 
  const things = await fs.promises.readdir(folder);
  for(let i = 0; i < things.length; i++) {
    await getStats(things[i], folder);
  }
}

// Gets statistics for each file/folder
async function getStats (thing, folder) {
  const path = folder + thing;
  let stats;
  try {
    stats = await fs.promises.stat(path);
  } catch(err) {
    logError(err);
  }
  await checkForFolder(stats, thing, path); 
}

// if the file/folder is a folder, recurse and do it again
async function checkForFolder(stats, thing, path){
  if (stats) {
    logThing(stats, thing, path);
    if (stats.isDirectory() ) {
      await getThings(path + '/');
    }
  }
}

Я уже предоставил доступ к своей консоли (временно для запуска этого сценария) для полного доступа к диску для целей этого сценария.

Также сценарий выполняетсяиспользуя sudo как таковой:

узел sudo _getInfo

enter image description here

...