什么是/ public的Meteor服务器端路径?

时间:2013-06-26 19:29:16

标签: directory meteor server-side

在Meteor客户端,我知道项目公共目录中的文件在'/'引用。

它们如何在服务器端引用?

我正在尝试使用fs.readdir获取目录列表,但我不知道如何构建相当于客户端'/ images / gallery'的服务器端路径。

有什么建议吗?

5 个答案:

答案 0 :(得分:8)

接受的" ./ public /"在Meteor 1.1中,答案对我不起作用。

但是,Meteor通过 meteor_bootstrap .serverDir变量提供服务器路径,因此要获取公用文件夹路径,请使用以下行:

path.join(__meteor_bootstrap__.serverDir, "../web.browser/app");

这适用于我的本地Windows机器和meteor.com。

请注意,这是"运行"你的公共文件夹的版本,所以 - 至少在开发中,我还没有在生产中检查过这部分 - 它实际上是你的开发和公共"的合并。文件夹和所有客户端JS文件。如果你有一个" config"项目中的文件夹,以及" config"公共目录中的文件夹,"运行"路径将包含两者的内容。

答案 1 :(得分:2)

自从0.6.5版本的meteor出现了升级,main.js现在已经进入了捆绑中的程序/服务器。所以公共目录的内容在这里:../ client / app /

github

上的详细信息

答案 2 :(得分:0)

如果您在客户端上使用节点文件系统库,那么您将使用本地文件系统结构,并且您的文件将被本地路径引用到它们驻留在本地磁盘上的位置。 / p>

例如..如果您的项目位于/ home / bob / meteor_projects / project1,那么您的文件位于/ home / bob / meteor_projects / project1 / public

答案 3 :(得分:0)

当我使用fs-module时,我只使用'./public'作为我的公共文件夹,在我的本地安装上运行正常。

然后我使用环境变量将它设置为生产服务器上正确的任何内容。

编辑(示例):

此方法将返回公用文件夹中的所有.HTML文件:

getHtmlFilesInPublicFolder: function() {

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

    var cleanedUpFiles = _(files).reject( function(fileName) {
        return fileName.indexOf('.html') < 0;
    });

    return cleanedUpFiles;

}

答案 4 :(得分:0)

我使用下面的代码行获得了Meteor项目目录的绝对路径。

var absPath = process.env.PWD;

我在Meteor 1.4.3.2中使用过它并且效果很好。