loo*_*omi 34 fs node.js meteor
到目前为止,我们可以使用以下代码片段获取稍后以readStream打开的文件的绝对路径:
var base = path.resolve('.');
var file = base + '/data/test.csv';
fs.createReadStream(file)
Run Code Online (Sandbox Code Playgroud)
由于Meteor 0.6.5基本路径指向 .meteor/local/build/programs/...
还有Assets API,它不能给我们一个路径但只返回读取文档.我们需要一个流来处理一些更大的数据文件?
Chr*_*itz 60
现在找到项目根目录的另一种方法是:
var base = process.env.PWD
Run Code Online (Sandbox Code Playgroud)
请注意,这与...不一样process.cwd().相反,它是您运行meteor命令的目录,通常是您要查找的目录.另请注意,从部署的捆绑包运行应用程序时,这可能不会非常有用.
Sui*_*oth 16
当我更新到0.6.5时,我遇到了同样的困境.
我目前正在做的是获得这样的路径:
var meteor_root = Npm.require('fs').realpathSync( process.cwd() + '/../' );
Run Code Online (Sandbox Code Playgroud)
这将在开发模式下返回:
/my/application/.meteor/local/build/programs
Run Code Online (Sandbox Code Playgroud)
并在捆绑模式:
/my/application/build/app/programs
Run Code Online (Sandbox Code Playgroud)
所以,从这里开始,我正在进入我的应用程序的"根"路径,如下所示:
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 + '/../../../../' );
}
Run Code Online (Sandbox Code Playgroud)
这种情况失败的唯一情况是,如果您碰巧将应用程序的文件夹命名为".meteor",那就是边缘情况.
相对于此,您可以访问您需要的任何其他内容.
此外,您还可以直接访问meteor bundler创建的assets文件夹:
var assets_folder = meteor_root + '/server/assets/' + Npm.require('path').basename( application_root );
Run Code Online (Sandbox Code Playgroud)
这可能是暂时的,因为我希望最终添加更好的文件/路径交互API.
希望有所帮助
| 归档时间: |
|
| 查看次数: |
35057 次 |
| 最近记录: |