web-dev-qa-db-fra.com

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.

254
helpermethod

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

419
Raynos

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
62
Samuel J Mathew

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.

3
themefield