21 Stimmen

Node.js-Funktion fs.unlink verursacht EPERM-Fehler

Ich benutze fs.unlink() um eine Datei zu löschen, erhalte ich die folgende Fehlermeldung:

uncaught undefined: 

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

Weiß jemand, warum das so ist?

47voto

Raghavendra Punkte 5101

Sie können ein Verzeichnis, das nicht leer ist, nicht löschen. Und fs.unlinkSync() wird verwendet, um eine Datei zu löschen, nicht einen Ordner.

Um einen leeren Ordner zu entfernen, verwenden Sie fs.rmdir()

um einen nicht leeren Ordner zu löschen, verwenden Sie dieses Snippet:

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

Ausschnitt aus stackoverflow: Ist node.js rmdir rekursiv? Funktioniert es auch bei nicht leeren Verzeichnissen?

8voto

David Lin Punkte 12919

Wenn Sie etwas wie rm -rf erreichen wollen, gibt es ein Paket von npm namens rimraf was es sehr einfach macht.

1voto

Extrange planet Punkte 199

Vielleicht ist die Pfad der Datei befindet, ist fehlerhaft.

wenn nicht, versuchen Sie es mit fs.unlinkSync()

-3voto

thejh Punkte 43512

Ja, Sie haben nicht die Erlaubnis, diese Datei zu löschen/zu entkoppeln. Versuchen Sie es noch einmal mit mehr Rechten oder überprüfen Sie, ob Sie den richtigen Pfad angegeben haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X