从流星应用程序内的目录中读取文件

时间:2013-05-26 19:36:28

标签: node.js meteor

如何读取/ / server路径中的meteor应用程序中的公共目录。

我尝试使用原生'fs'包,但我一直收到错误的文件/目录。

var fs = Npm.require('fs');
var files = fs.readdirSync('/public/soundfiles/');

是否有人使用文件系统包读取流星应用程序中的静态文件?

7 个答案:

答案 0 :(得分:4)

我了解到,如果您没有在外面显示文件,最好将文件上传到您的私人文件夹中。 在我的例子中,我需要存储XML上传并处理它们。 起初我将XML写入公共文件夹,但这会触发重新加载。 然后我将上传文件夹重命名为/public/.#uploads,这将停止Meteor的重新加载,但是又一次......它在构建期间完全忽略了该文件夹,并且构建中不存在上传的文件夹(在此过程中抛出ENOENT错误)读取)。

所以我想出最好把文件放在/ private / files中,然后阅读如下:

result = fs.readdirSync('assets/app/files')

私人文件夹中的所有内容都将被移动到Assets文件夹,其中在运行时期间有一个APP文件夹可用(您在构建文件夹结构中没有看到)。

只需简单地转储result = fs.readdirSync('.')即可查看您所在的文件夹并查看结构。

*** ***** UPDATE 在private文件夹中本地放置文件仍会触发meteor重建/更新(可能不在生产中......)所以我发现另一个解决方案使用UploadServer来定义上传目录: https://github.com/tomitrescak/meteor-uploads

答案 1 :(得分:2)

访问没有“/ public”部分的文件。在正在运行的Meteor应用程序中,public目录将成为您的根目录,/public/whatever处的所有内容都可以在/whatever访问。

此外,如果你正在玩文件,你可能会发现这些有用:

答案 2 :(得分:2)

这不再是真的。对于Meteor 0.8,文件夹“../client/app”是公开的。因此,使用fs.readdirSync('../ client / app')公开获取文件和文件夹。

来源:个人经历和https://stackoverflow.com/a/18405793

答案 3 :(得分:2)

对于meteor 1.0.2 public是/web.browser/app/ 通过输入.meteor dir进行检查 linux中的总路径/home/user/your_app_name/.meteor/local/build/programs/web.browser/app/ 要获得root是`process.env.PWD或process.cwd()。 我不确定它的工作是否已经部署。

_meteor_bootstrap_.serverDir +'/assets/app'

这是私人文件夹的路径。

答案 4 :(得分:2)

这对Meteor 1.0来说很有用:

import pandas as pd

DF = pd.read_csv('mydata.csv') 
for Admitted_Date, Discharged_Date in DF
  pd.to_datetime(mydata.pop('Date'), format="%b%Y")

答案 5 :(得分:1)

对于Meteor 1.4,请使用服务器资产。 请参阅有关资产的官方文档 http://docs.meteor.com/api/assets.html

答案 6 :(得分:0)

在服务器上,您可以使用fs访问流星目录树的任何部分,而不仅仅是/public

import fs from 'fs';
const rd = process.env.PWD;
const obj = JSON.parse(fs.readFileSync(`${rd}/private/file.json`));

将读取并解析流星应用程序目录根目录下private/file.json处的json文件。