444 Stimmen

Was ist der Unterschied zwischen process.cwd() und __dirname?

Was ist der Unterschied zwischen

console.log(process.cwd())

y

console.log(__dirname);

Ich habe gesehen, dass beide in ähnlichen Zusammenhängen verwendet werden.

685voto

Raynos Punkte 162170

process.cwd() gibt das aktuelle Arbeitsverzeichnis zurück,

d.h. das Verzeichnis, von dem aus Sie die node Befehl.

__dirname gibt den Verzeichnisnamen des Verzeichnisses zurück, das die JavaScript-Quellcode-Datei enthält

170voto

SAMUEL Punkte 7352

Wie bei node js doc process.cwd()

cwd ist eine Methode des globalen Objekts process gibt einen String-Wert zurück, der das aktuelle Arbeitsverzeichnis des Node.js-Prozesses darstellt.

Wie bei node js doc __dirname

Der Verzeichnisname des aktuellen Skripts als String-Wert. __dirname ist nicht wirklich global, sondern eher lokal für jedes Modul.

Lassen Sie mich dies anhand von Beispielen erläutern:

Nehmen wir an, wir haben eine main.js Datei, die sich innerhalb von C:/Project/main.js und Laufen node main.js beide Werte ergeben dieselbe Datei.

oder einfach mit der folgenden 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

Nehmen wir an, wir haben eine weitere Datei script.js Dateien in einem Unterverzeichnis des Projekts, d.h. C:/Project/lib/script.js und Laufen node main.js die erfordern script.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

Vereinfacht lässt sich das so formulieren:

process.cwd() gibt den Wert des Verzeichnisses zurück, in dem wir den Knotenprozess ausführen, während

__dirname gibt den Wert des Verzeichnisses zurück, in dem sich die aktuell laufende Datei befindet.

15voto

themefield Punkte 3022

Das Wissen um die Umfang von jedem kann man sich die Dinge leichter merken.

process est node das globale Objekt und .cwd() gibt zurück, wo der Knoten läuft.

__dirname est module und stellt den Dateipfad des Moduls dar. Im Knoten befindet sich ein Modul in einer Datei.

Ähnlich, __filename ist eine weitere module die den Dateinamen des Moduls enthält.

9voto

user1412192 Punkte 77

$ 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

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