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