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.
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.
Réponses:
process.cwd() renvoie le répertoire de travail actuel,
c'est-à-dire le répertoire à partir duquel vous avez appelé la nodecommande.
__dirname renvoie le nom du répertoire du répertoire contenant le fichier de code source JavaScript
Selon le nœud js doc
process.cwd()
cwdest une méthode d'objet global process, retourne une valeur de chaîne qui est le répertoire de travail actuel du processus Node.js.
Selon le nœud js doc
__dirname
Nom de répertoire du script en cours sous forme de valeur de chaîne. __dirname n'est pas réellement un global mais plutôt local à chaque module.
Permettez-moi d'expliquer avec un exemple,
supposons que nous ayons un main.jsfichier à l'intérieur C:/Project/main.js
et node main.jsque ces deux valeurs retournent 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.jsdans un sous-répertoire du projet, c. C:/Project/lib/script.js-à node main.js-d.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 la portée de chacun peut rendre les choses plus faciles à retenir.
processest nodel'objet global de, et .cwd()retourne où le nœud est en cours d'exécution.
__dirnameest modulela propriété de, et représente le chemin du fichier du module. Dans le nœud, un module réside dans un fichier.
De même, __filenameest une autre modulepropriété, qui contient le nom de fichier du module.
$ 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()c'est synonyme de.tous les cas à l'exception derequire()?