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 docprocess.cwd()
cwd
est une méthode d'objet global process
, renvoie une valeur de chaîne qui correspond au répertoire de travail actuel du processus Node.js.
Selon le noeud js doc__dirname
Le nom du répertoire du script actuel en tant que valeur de chaîne. __dirname n'est pas réellement global mais plutôt local pour chaque module.
Laissez-moi vous expliquer avec l'exemple,
supposons que nous ayons un fichier main.js
situé dans C:/Project/main.js
et que vous exécutez 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
fichiers dans un sous-répertoire du projet, à savoir C:/Project/lib/script.js
et exécutant node main.js
qui nécessite 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
Connaître le scope de chacun peut rendre les choses plus faciles à mémoriser.
process
est l'objet global de node
et .cwd()
renvoie l'emplacement où le noeud est en cours d'exécution.
__dirname
est la propriété de module
et représente le chemin du fichier du module. Dans le noeud, un module réside dans un fichier.
De même, __filename
est une autre propriété de module
, qui contient le nom de fichier du module.