Функция Node.js fs.unlink вызывает ошибку EPERM

Я использую fs.unlink() для удаления файла, и я получаю следующую ошибку:

uncaught undefined: 

Error: EPERM, Operation not permitted '/Path/To/File'

Кто-нибудь знает, почему это происходит?

Ответ 1

Вы не можете удалить каталог, который не пуст. И fs.unlinkSync() используется для удаления файла, а не папки.

Чтобы удалить пустую папку, используйте fs.rmdir()

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

var deleteFolderRecursive = function(path) {
  if( fs.existsSync(path) ) {
      fs.readdirSync(path).forEach(function(file) {
        var curPath = path + "/" + file;
          if(fs.statSync(curPath).isDirectory()) { // recurse
              deleteFolderRecursive(curPath);
          } else { // delete file
              fs.unlinkSync(curPath);
          }
      });
      fs.rmdirSync(path);
    }
};

Фрагмент из stackoverflow: Является ли node.js rmdir рекурсивным? Будет ли он работать с непустыми каталогами?

Ответ 2

Если вы хотите достичь чего-то вроде rm -rf, есть пакет из npm, называемый rimraf, что делает его очень простым.

Ответ 3

Возможно, Путь файла находится в ошибке.

если нет, попробуйте с fs.unlinkSync()

Ответ 4

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