Buscar ruta base absoluta del directorio del proyecto
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 el Meteoro 0.6.5 la trayectoria de la base apunta a .meteor/local/build/programs/...
También está la API de activos, que no puede devolvernos una ruta sino solo el documento de lectura. ¿Pero necesitamos un flujo para procesar algunos archivos de datos más grandes?
6 answers
Otra forma de encontrar el directorio raíz de tu proyecto ahora es esta:
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 normalmente es lo que está buscando. Tenga en cuenta también que esto probablemente no será muy útil cuando ejecute su aplicación desde un paquete implementado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-02 21:51:31
Me encontré con la misma situación cuando actualizé 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 devuelve en modo dev :
/my/application/.meteor/local/build/programs
Y en modo liado :
/my/application/build/app/programs
Así que desde aquí estoy llegando a la ruta "raíz" de mi aplicación de la siguiente manera:
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 das un nombre a la carpeta de tu aplicación ".meteoro " pero eso es un caso extremo.
Relativo a que usted puede acceder a cualquier otra cosa que necesite.
Además, también puede obtener acceso directo a la carpeta assets que crea el meteor bundler:
var assets_folder = meteor_root + '/server/assets/' + Npm.require('path').basename( application_root );
Es probable que esto sea temporal, ya que espero que se agreguen eventualmente mejores API de interacción de archivo/ruta..
Esperanza que ayuda
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-26 06:29:36
Hey no necesitas codificar como las respuestas anteriores... echa un vistazo a Este paquete
Después de instalarlo, puede acceder a la ruta raíz de su meteoro solo con Meteor.rootPath
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-18 17:41:44
Desde la versión 1.3, la función documentada
Assets.absoluteFilePath(assetPath)
Parece ser la mejor manera de obtener la ruta del proyecto de manera confiable.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-23 11:49:59
Para Meteoro 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);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-12 23:57:58
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];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-22 21:25:41