route node desde cero another node.js module path fs

node.js - cero - Ruta base de la aplicación desde un módulo en NodeJS



npm (2)

Estoy creando una aplicación web en NodeJS, y estoy implementando mis rutas API en módulos separados. En una de mis rutas, estoy haciendo algo de manipulación de archivos y necesito conocer la ruta de la aplicación base. si utilizo __dirname me da el directorio que aloja mi módulo, por supuesto.

Actualmente estoy usando esto para obtener la ruta de la aplicación base (dado que conozco la ruta relativa al módulo desde la ruta base):

path.join(__dirname, "../../", myfilename)

¿Hay una mejor manera que usar ../../ ? Estoy ejecutando Node en Windows, por lo que no hay process.env.PWD y no quiero ser específico de la plataforma de todos modos.


El enfoque de usar __dirname es el más confiable. Siempre te dará el directorio correcto. No tiene que preocuparse por ../../ en el entorno de Windows, ya que path.join() se encargará de eso.

Sin embargo, hay una solución alternativa. Puede usar process.cwd() que devuelve el directorio de trabajo actual del proceso. Ese comando funciona bien si ejecuta su aplicación de nodo desde el directorio de la aplicación base. Sin embargo, si ejecuta su aplicación de nodo desde un directorio diferente, digamos, su directorio principal (por ejemplo, node yourapp/index.js) entonces el mecanismo __dirname funcionará mucho mejor.

Espero que le ayudará.


Puede usar path.resolve() sin argumentos para obtener el directorio de trabajo que suele ser la ruta de la aplicación base. Si el argumento es una ruta relativa, se asume que es relativo al directorio de trabajo actual para que pueda escribir

require(path.resolve(myfilename));

para requerir su módulo en la raíz de la aplicación.