Quelle est la différence entre process.cwd () et __dirname?

Quelle est la différence entre

console.log(process.cwd()) 

et

 console.log(__dirname); 

J’ai vu les deux utilisés dans des contextes similaires.

process.cwd() renvoie le répertoire de travail en cours,

c’est-à-dire le répertoire à partir duquel vous avez appelé la commande node .

__dirname renvoie le nom du répertoire contenant le fichier de code source JavaScript.

Selon le noeud js doc process.cwd()

cwd est une méthode de process object process , renvoie une valeur de chaîne qui est le répertoire de travail actuel du processus Node.js.

Selon le noeud js doc __dirname

Le nom du répertoire du script en cours en tant que valeur de chaîne. __dirname n’est pas réellement un global mais plutôt local à chaque module.

Laissez-moi vous expliquer par exemple,

supposons que nous ayons un fichier main.js réside dans C:/Project/main.js et qui exécute node main.js ces deux valeurs renvoient le même fichier

ou simplement avec la structure de dossiers suivante

 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 

supposons que nous ayons un autre fichier script.js dans un sous-répertoire du projet, c.-à-d. C:/Project/lib/script.js et qui exécute node main.js qui nécessite script.js

main.js

 require('./assets/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