serve rutas proyecto node crear node.js meteor fs

node.js - rutas - Encuentre la ruta base absoluta del directorio del proyecto



npm express (6)

A partir de Meteor 1.2.1, esto funciona para mí:

var absoluteBasePath = path.resolve(''../../../../../.'');

El mismo resultado usando split :

var absoluteBasePath = path.resolve(''.'').split(path.sep + ''.meteor'')[0];

Usando process.cwd() :

var absoluteBasePath = path.resolve(process.cwd(), ''../../../../../''); var absoluteBasePath = path.resolve(process.cwd()).split(path.sep + ''.meteor'')[0];

Hasta ahora podíamos obtener la ruta absoluta de un archivo para abrir más tarde como readStream con este fragmento de código:

var base = path.resolve(''.''); var file = base + ''/data/test.csv''; fs.createReadStream(file)

Desde Meteor 0.6.5, la ruta base apunta a .meteor/local/build/programs/...

También está la API de activos, que no nos puede devolver una ruta sino solo el documento leído. ¿Necesitamos una transmisión para procesar algunos archivos de datos más grandes?


Desde la versión 1.3, la función documented

Assets.absoluteFilePath(assetPath)

parece ser la mejor manera de obtener la ruta del proyecto de manera confiable.

Meteor Github


Me encontré con la misma situación cuando actualicé a 0.6.5.

Lo que estoy haciendo actualmente es obtener el camino de esta manera:

var meteor_root = Npm.require(''fs'').realpathSync( process.cwd() + ''/../'' );

Esto vuelve en el modo dev :

/my/application/.meteor/local/build/programs

y en modo incluido :

/my/application/build/app/programs

Así que desde aquí estoy llegando a la ruta "raíz" de mi aplicación como sigue:

var application_root = Npm.require(''fs'').realpathSync( meteor_root + ''/../'' ); // if running on dev mode if( Npm.require(''path'').basename( Npm.require(''fs'').realpathSync( meteor_root + ''/../../../'' ) ) == ''.meteor'' ){ application_root = Npm.require(''fs'').realpathSync( meteor_root + ''/../../../../'' ); }

El único caso en el que esto fallaría es si le asigna un nombre a la carpeta de la aplicación ".meteor", pero eso es un caso marginal.

En relación con eso, puedes acceder a cualquier otra cosa que necesites.

Además, también puede obtener acceso directo a la carpeta de activos que crea el paquete de meteoritos:

var assets_folder = meteor_root + ''/server/assets/'' + Npm.require(''path'').basename( application_root );

Es probable que sea temporal, ya que espero que se agreguen mejores API de interacción de archivos / rutas.

Espero que ayude


Otra forma de encontrar el directorio raíz de su proyecto ahora es este:

var base = process.env.PWD

Tenga en cuenta que esto no es lo mismo que process.cwd() . En cambio, es el directorio donde ejecutó el comando meteor , que es típicamente lo que está buscando. Tenga en cuenta también que esto probablemente no sea muy útil al ejecutar su aplicación desde un paquete implementado.


Oye, no necesitas codificar como las respuestas anteriores ... echa un vistazo a este paquete

Después de instalarlo, puedes acceder a la ruta raíz de tu meteorito solo con Meteor.rootPath


Para Meteor 0.8.3,

__meteor_bootstrap__.serverDir da el directorio de trabajo, cuando se ejecuta en modo servidor.

ejemplo

if (Meteor.isServer) { console.log(__meteor_bootstrap__.serverDir); }