Was ist der Unterschied zwischen
console.log(process.cwd())
und
console.log(__dirname);
Ich habe beide in ähnlichen Kontexten verwendet gesehen.
Was ist der Unterschied zwischen
console.log(process.cwd())
und
console.log(__dirname);
Ich habe beide in ähnlichen Kontexten verwendet gesehen.
Antworten:
process.cwd()
gibt das aktuelle Arbeitsverzeichnis zurück,
dh das Verzeichnis, aus dem Sie den node
Befehl aufgerufen haben .
__dirname
Gibt den Verzeichnisnamen des Verzeichnisses zurück, das die JavaScript-Quellcodedatei enthält
.
ist relativ zu process.cwd()
(also auch), außer dass require()
dies relativ zur aktuell ausgeführten Datei funktioniert. Weitere Informationen finden Sie hier .
Gemäß Knoten js doc
process.cwd()
cwd
ist eine Methode für ein globales Objekt process
und gibt einen Zeichenfolgenwert zurück, der das aktuelle Arbeitsverzeichnis des Node.js-Prozesses ist.
Gemäß Knoten js doc
__dirname
Der Verzeichnisname des aktuellen Skripts als Zeichenfolgenwert. __dirname ist eigentlich kein globaler, sondern ein lokaler Name für jedes Modul.
Lassen Sie mich mit Beispiel erklären,
Angenommen, wir haben eine main.js
Datei im Inneren C:/Project/main.js
und node main.js
beide Werte geben dieselbe Datei zurück
oder einfach mit folgender Ordnerstruktur
Project
├── main.js
└──lib
└── script.js
main.js
console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project
console.log(__dirname===process.cwd())
// true
Angenommen, wir haben andere script.js
Dateidateien in einem Unterverzeichnis des Projekts, dh C:/Project/lib/script.js
und laufen, node main.js
die erfordernscript.js
main.js
require('./lib/script.js')
console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project
console.log(__dirname===process.cwd())
// true
script.js
console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project\lib
console.log(__dirname===process.cwd())
// false
Wenn Sie den Umfang der einzelnen Elemente kennen, können Sie sich leichter daran erinnern.
process
ist node
das globale Objekt von .cwd()
is und gibt zurück, wo der Knoten ausgeführt wird.
__dirname
ist module
die Eigenschaft von is und repräsentiert den Dateipfad des Moduls. Im Knoten befindet sich ein Modul in einer Datei.
Ebenso __filename
ist module
die Eigenschaft eines anderen, die den Dateinamen des Moduls enthält.
$ find proj
proj
proj/src
proj/src/index.js
$ cat proj/src/index.js
console.log("process.cwd() = " + process.cwd());
console.log("__dirname = " + __dirname);
$ cd proj; node src/index.js
process.cwd() = /tmp/proj
__dirname = /tmp/proj/src
process.cwd()
synonym ist ?.
require()