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.
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);
}