Qual é a diferença entre
console.log(process.cwd())
e
console.log(__dirname);
Eu já vi os dois usados em contextos semelhantes.
Qual é a diferença entre
console.log(process.cwd())
e
console.log(__dirname);
Eu já vi os dois usados em contextos semelhantes.
Respostas:
process.cwd() retorna o diretório de trabalho atual,
ou seja, o diretório a partir do qual você chamou o nodecomando.
__dirname retorna o nome do diretório que contém o arquivo de código-fonte JavaScript
Conforme o nó js doc
process.cwd()
cwdé um método de objeto global process, retorna um valor de sequência que é o diretório de trabalho atual do processo Node.js.
Conforme o nó js doc
__dirname
O nome do diretório do script atual como um valor de sequência. __dirname não é realmente global, mas local para cada módulo.
Deixe-me explicar com exemplo,
suponha que tenhamos um main.jsarquivo dentro C:/Project/main.js
e executando node main.jsesses dois valores retornem o mesmo arquivo
ou simplesmente com a seguinte estrutura de pastas
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
suponha que tenhamos outros script.jsarquivos dentro de um subdiretório do projeto, ou sejaC:/Project/lib/script.js e executandonode main.js que exijascript.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
Conhecer o escopo de cada um pode facilitar a lembrança.
processé nodeo objeto global de e .cwd()retorna onde o nó está sendo executado.
__dirnameé modulea propriedade de e representa o caminho do arquivo do módulo. No nó, um módulo reside em um arquivo.
Da mesma forma, __filenameé outra modulepropriedade, que contém o nome do arquivo do módulo.
$ 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()é sinônimo.para todos os casos, exceto pararequire()?