12

How can i read the public directory in a meteor application inside my /server path.

I tried using the native 'fs' package but i keep getting a file/directory not found error.

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

Has anyone used the filesystem package to read static files inside a meteor application?

4

7 回答 7

5

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

所以我发现最好将文件放在 /private/files 中,然后读取如下:

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

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

它有助于简单地转储result = fs.readdirSync('.')以查看您所在的文件夹并查看结构。

***更新***** 本地将文件放在文件private夹中仍然触发流星重建/更新(可能不在生产中..)所以我找到了另一个使用 UploadServer 来定义上传目录的解决方案: https ://github.com /tomitrescak/流星上传

于 2015-09-14T02:57:16.607 回答
4

这在 Meteor 1.0 中对我有用:

var fs = Npm.require('fs')
var xsd = fs.readFileSync(process.cwd().split('.meteor')[0] + 'server/company.xsd', 'utf8')
于 2016-02-28T19:29:11.813 回答
2

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

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

于 2014-03-30T20:35:21.683 回答
2

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

此外,如果您正在处理文件,您可能会发现这些很有用:

于 2013-05-27T17:28:51.857 回答
2

对于meteor 1.0.2 public 是 /web.browser/app/ 通过输入 .meteor dir 检查总路径 in linux /home/user/your_app_name/.meteor/local/build/programs/web.browser/app/ 并到达根是`process.env.PWD 或 process.cwd()。我不确定它的工作是否已部署。

_meteor_bootstrap_.serverDir +'/assets/app'

这是私人文件夹的路径。

于 2014-12-30T23:45:06.450 回答
1

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

于 2016-09-22T04:09:29.660 回答
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 文件。

于 2019-01-19T19:48:07.537 回答