在Meteor客户端,我知道项目公共目录中的文件在'/'引用。
它们如何在服务器端引用?
我正在尝试使用fs.readdir获取目录列表,但我不知道如何构建相当于客户端'/ images / gallery'的服务器端路径。
有什么建议吗?
答案 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 /
上的详细信息答案 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中使用过它并且效果很好。