nodejs mkdir-Fehlerbericht

PHPz
Freigeben: 2023-05-11 12:59:08
Original
1259 Leute haben es durchsucht

Kürzlich bin ich bei der Verwendung von Node.js auf ein mkdir-Fehlerproblem gestoßen. Als ich versuchte, mit der Methode fs.mkdir() ein neues Verzeichnis zu erstellen, gab das System die folgende Fehlermeldung aus:

Error: ENOENT: no such file or directory, mkdir 'path/to/new/directory'
Nach dem Login kopieren

Das erste, woran ich dachte, war ein Pfadproblem, also habe ich das überprüft Pfad. Ist es richtig? Es stellte sich heraus, dass der Pfad korrekt war, was mich etwas verwirrte.

Ich habe den Code hin und her durchgesehen und schließlich das Problem gefunden. Tatsächlich ist die Fehlermeldung bereits sehr offensichtlich – keine solche Datei oder kein solches Verzeichnis. Das heißt, dieser Fehler wird nicht durch einen falschen Pfad verursacht, sondern dadurch, dass die Datei oder der Ordner nicht vorhanden ist.

Das Problem ist, dass ich das übergeordnete Verzeichnis im Pfad nicht erstellt habe, bevor ich die mkdir-Methode zum Erstellen des Verzeichnisses verwendet habe. In diesem Fall erstellt die Methode fs.mkdir() nur das Verzeichnis der letzten Ebene im Pfad, keine Zwischenverzeichnisse.

Vor dem Erstellen des Verzeichnisses path/to/new/directory muss beispielsweise zuerst das Verzeichnis path/to/ erstellt werden, andernfalls tritt ein ENOENT-Fehler auf.

Um dieses Problem zu lösen, müssen wir nur die Methode fs.mkdirSync() verwenden, um das Zwischenverzeichnis rekursiv zu erstellen, bevor wir die Methode mkdir verwenden. Das Folgende ist ein implementierter Beispielcode:

const fs = require('fs');
const path = require('path');

function mkdirSyncR(targetDir) {
  const sep = path.sep;
  const initDir = path.isAbsolute(targetDir) ? sep : '';
  targetDir.split(sep).reduce((parentDir, childDir) => {
    const curDir = path.resolve(parentDir, childDir);
    try {
      if (!fs.existsSync(curDir)) {
        fs.mkdirSync(curDir);
      }
    } catch (err) {
      if (err.code !== 'EEXIST') {
        throw err;
      }
    }
    return curDir;
  }, initDir);
}

const newDir = 'path/to/new/directory';
mkdirSyncR(path.dirname(newDir));
fs.mkdirSync(newDir);
Nach dem Login kopieren

Die Methode mkdirSyncR() in diesem Beispielcode kann rekursiv ein Verzeichnis erstellen und beim Erstellen des Verzeichnisses feststellen, ob das Verzeichnis vorhanden ist. Bevor wir die mkdir()-Methode zum Erstellen eines Verzeichnisses verwenden, verwenden wir zunächst den Teil des Pfads mit Ausnahme des Verzeichnisses der letzten Ebene (d. h. rufen die Methode path.dirname() auf), um ein Zwischenverzeichnis zu erstellen.

Jetzt können wir problemlos ein neues Verzeichnis erstellen.

Zusammenfassung

Wenn bei Verwendung der mkdir-Methode in Node.js das Zwischenverzeichnis des Verzeichnisses nicht vorhanden ist, tritt ein ENOENT-Fehler auf. Um dieses Problem zu lösen, können wir zunächst die Methode fs.mkdirSync() verwenden, um rekursiv ein Zwischenverzeichnis zu erstellen, und dann die Methode fs.mkdir() verwenden, um ein neues Verzeichnis zu erstellen.

Das obige ist der detaillierte Inhalt vonnodejs mkdir-Fehlerbericht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage