从meteor应用程序中的目录读取文件

我怎样才能读取我/服务器path中的meteor应用程序中的公共目录。

我尝试使用本地的'fs'包,但我不断收到文件/目录未find错误。

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

有没有人使用文件系统包来读取meteor应用程序中的静态文件?

访问没有“/ public”部分的文件。 在一个正在运行的Meteor应用程序中, public目录变成你的根目录,而位于/public/whatever都可以在/whatever处访问。

另外,如果你玩弄文件,你可能会发现这些有用的:

  • FileSaver.js
  • CollectionFS

我了解到,如果您不在外部显示,最好将file upload到您的私人文件夹中。 在我的情况下,我需要存储XML上传和处理它们。 起初,我将XML写入公用文件夹,但会触发重新加载。 然后我将上传文件夹重命名为/public/.#uploads,这将停止Meteor的重新加载,但是再次…它在构build过程中完全忽略该文件夹,并且上传的文件夹不会存在于构build中(在执行期间抛出ENOENT错误读)。

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

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

私人文件夹中的所有内容都将被移动到资源文件夹中,在运行时有一个可用的APP文件夹(您在生成文件夹结构中看不到)。

它有助于简单地转储result = fs.readdirSync('.')来查看你在哪个文件夹中并查看结构。

***更新*****本地文件放在private文件夹仍然触发meteor重build/更新(可能不是在生产..)所以我发现了另一个解决scheme,使用UploadServer只是定义上传目录: https:// github。 COM / tomitrescak /meteor上传

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

资料来源:个人经验和https://stackoverflow.com/a/18405793

对于meteor1.0.2 public是/web.browser/app/通过input.meteor dir进行检查在linux中的总path/home/user/your_app_name/.meteor/local/build/programs/web.browser/app/然后到达根是`process.env.PWD或process.cwd()。 我不知道是否部署了它的工作。

 _meteor_bootstrap_.serverDir +'/assets/app' 

这是私人文件夹的path。

这在我的Meteor 1.0中是适用的:

 var fs = Npm.require('fs') var xsd = fs.readFileSync(process.cwd().split('.meteor')[0] + 'server/company.xsd', 'utf8') 

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