Cuál es la diferencia entre
console.log(process.cwd())
y
console.log(__dirname);
He visto a ambos utilizados en contextos similares.
Cuál es la diferencia entre
console.log(process.cwd())
y
console.log(__dirname);
He visto a ambos utilizados en contextos similares.
Respuestas:
process.cwd() devuelve el directorio de trabajo actual,
es decir, el directorio desde el que invocó el nodecomando.
__dirname devuelve el nombre del directorio que contiene el archivo de código fuente JavaScript
Según el nodo js doc
process.cwd()
cwdes un método de objeto global process, devuelve un valor de cadena que es el directorio de trabajo actual del proceso Node.js.
Según el nodo js doc
__dirname
El nombre del directorio del script actual como un valor de cadena. __dirname no es realmente global sino más bien local para cada módulo.
Déjame explicarte con ejemplo,
supongamos que tenemos un main.jsarchivo que reside dentro C:/Project/main.js
y que la ejecución de node main.jsambos valores devuelve el mismo archivo
o simplemente con la siguiente estructura de carpetas
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
supongamos que tenemos otros script.jsarchivos dentro de un subdirectorio del proyecto, es decir, en C:/Project/lib/script.jsejecución, node main.jsque requierenscript.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
Conocer el alcance de cada uno puede hacer que las cosas sean más fáciles de recordar.
processes nodeel objeto global y .cwd()regresa donde se está ejecutando el nodo.
__dirnamees modulepropiedad de y representa la ruta del archivo del módulo. En el nodo, un módulo reside en un archivo.
Del mismo modo, __filenamees modulepropiedad de otro , que contiene el nombre del archivo del módulo.
PS find proj
proj
proj/src
proj/src/index.js
PS cat proj/src/index.js
console.log("process.cwd() = " + process.cwd());
console.log("__dirname = " + __dirname);
PS cd proj; node src/index.js
process.cwd() = /tmp/proj
__dirname = /tmp/proj/src
process.cwd()es sinónimo.de todos los casos exceptorequire()?