Rufen Sie den Namen des übergeordneten Verzeichnisses in Node.js ab

76

Ich verwende Node.js und möchte den übergeordneten Verzeichnisnamen für eine Datei erhalten. Ich habe die Akte "../test1/folder1/FolderIWant/test.txt".

Ich will bekommen "FolderIWant".

Ich habe versucht:

var path = require('path');
var parentDir = path.dirname(filename);

Aber es kehrt zurück ../test1/folder1/FolderIWant.

Me5
quelle

Antworten:

179

Was Sie wollen ist path.basename:

path.basename(path.dirname(filename))
Daniel Wolf
quelle
2
Bessere und sauberere Lösungen.
Subhendu Kundu
37

Die Antwort von Daniel Wolf ist richtig, auch wenn Sie den vollständigen Pfad des übergeordneten Verzeichnisses möchten:

require('path').resolve(__dirname, '..')
Luftschiff
quelle
0
const path = require('path');

module.exports = path.dirname(process.mainModule.filename)

Verwenden Sie dies überall, um das Stammverzeichnis abzurufen

C Williams
quelle
es zeigt Fehler bei mainModule. Ungelöste Variable mainModule
usman imtiaz
0

Bei Verwendung von Node ab 06-2019 stieß ich auf ein Problem beim Zugriff auf just filename. Also habe ich es stattdessen nur ein kleines bisschen modifiziert und verwendet:

path.dirname(__filename).split(path.sep).pop()

Jetzt erhalten Sie den Verzeichnisnamen des aktuellen Verzeichnisses und nicht den vollständigen Pfad. Obwohl die vorherigen Antworten möglicherweise für andere zu funktionieren scheinen, verursachte dies für mich Probleme, da der Knoten nach einer Konstante oder einer Variablen suchte, aber keine finden konnte.

DevOpsIsTheNameOfTheGame
quelle
0

process.mainModuleEigentum ist in veraltet v14.0.0. Wenn foo.js von ausgeführt wird node foo.js(z. B. somedir / foo.js "),

const path = require("path");

module.exports = path.dirname(require.main.filename);

Ergebnis: Somedir

Verwenden Sie stattdessen require.main

Mich_
quelle
0

const path = require ("path") path.dirname (path.basename (__ dirname))

Hartes Mangalam
quelle
0

Einfachster Weg ohne Knotenmodule wie den Pfad. Sie können auf folgende Weise einfach den Namen des Stammordners abrufen.

var rootFolder = __dirname.split('/').pop();
console.log(rootFolder);
Vinodh Ram
quelle