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 nodeBefehl 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()
cwdist eine Methode für ein globales Objekt processund 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.jsDatei im Inneren C:/Project/main.js
und node main.jsbeide 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.jsDateidateien in einem Unterverzeichnis des Projekts, dh C:/Project/lib/script.jsund laufen, node main.jsdie 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.
processist nodedas globale Objekt von .cwd()is und gibt zurück, wo der Knoten ausgeführt wird.
__dirnameist moduledie Eigenschaft von is und repräsentiert den Dateipfad des Moduls. Im Knoten befindet sich ein Modul in einer Datei.
Ebenso __filenameist moduledie 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()