在 Meteor 客户端,我知道项目公共目录中的文件在“/”处引用。
它们是如何在服务器端引用的?
我正在尝试使用 fs.readdir 获取目录列表,但我不知道如何构造路径以到达与客户端“/images/gallery”等效的服务器端。
有什么建议吗?
在 Meteor 客户端,我知道项目公共目录中的文件在“/”处引用。
它们是如何在服务器端引用的?
我正在尝试使用 fs.readdir 获取目录列表,但我不知道如何构造路径以到达与客户端“/images/gallery”等效的服务器端。
有什么建议吗?
接受的“./public/”答案在 Meteor 1.1 中对我不起作用。
但是,Meteor 通过meteor_bootstrap .serverDir 变量提供服务器路径,因此要获取公用文件夹路径,我使用以下行:
path.join(__meteor_bootstrap__.serverDir, "../web.browser/app");
这适用于我的本地 Windows 机器和meteor.com。
请注意,这是您的公用文件夹的“运行”版本,所以 - 至少在开发中,我没有在生产中检查这部分 - 它实际上是您的开发“公共”文件夹和所有客户端 JS 的合并文件。如果您的项目中有一个“config”文件夹,而您的公共目录中有一个“config”文件夹,则“运行”路径将包含两者的内容。
自从 0.6.5 版本的流星,main.js 现在 chdirs 进入你的包中的程序/服务器,有一个升级。所以公共目录的内容在这里:../client/app/
github上的详细信息
当我使用 fs 模块时,我只使用 './public' 作为我的公用文件夹,在我的本地安装上工作正常。
然后我使用环境变量在生产服务器上将其设置为正确的值。
编辑(一个例子):
此方法将返回公用文件夹中的所有 .HTML 文件:
getHtmlFilesInPublicFolder: function() {
var files = fs.readdirSync('./public/');
var cleanedUpFiles = _(files).reject( function(fileName) {
return fileName.indexOf('.html') < 0;
});
return cleanedUpFiles;
}
如果您在客户端上使用节点文件系统库,那么您将使用本地文件系统结构,并且您的文件将被本地路径引用到它们驻留在本地磁盘上的任何位置。
例如..如果您的项目位于 /home/bob/meteor_projects/project1 那么您的文件位于 /home/bob/meteor_projects/project1/public
我使用下面的代码行获得了 Meteor 项目目录的绝对路径。
var absPath = process.env.PWD;
我已经将它与 Meteor 1.4.3.2 一起使用,并且效果很好。