Cuál es la diferencia entre
console.log(process.cwd())
y
console.log(__dirname);
He visto a ambos utilizados en contextos similares.
process.cwd()
devuelve el directorio de trabajo actual,
es decir, el directorio desde el que invocó el node
comando.
__dirname
devuelve el nombre del directorio que contiene el archivo de código fuente JavaScript
process.cwd()
es sinónimo.
de todos los casos exceptorequire()
?.
es relativo aprocess.cwd()
(también), exceptorequire()
que funciona en relación con el archivo en ejecución actual. Mira aquí para más.Según el nodo js doc
process.cwd()
cwd
es un método de objeto globalprocess
, 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.js
archivo que reside dentroC:/Project/main.js
y que la ejecución denode main.js
ambos valores devuelve el mismo archivoo simplemente con la siguiente estructura de carpetas
main.js
supongamos que tenemos otros
script.js
archivos dentro de un subdirectorio del proyecto, es decir, enC:/Project/lib/script.js
ejecución,node main.js
que requierenscript.js
main.js
script.js
fuente
Conocer el alcance de cada uno puede hacer que las cosas sean más fáciles de recordar.
process
esnode
el objeto global y.cwd()
regresa donde se está ejecutando el nodo.__dirname
esmodule
propiedad de y representa la ruta del archivo del módulo. En el nodo, un módulo reside en un archivo.Del mismo modo,
__filename
esmodule
propiedad de otro , que contiene el nombre del archivo del módulo.fuente
PS
find proj
PS
cat proj/src/index.js
PS
cd proj; node src/index.js
fuente