如何在Meteor上使服务器可以访问文本文件

时间:2013-08-15 06:40:30

标签: javascript meteor

我很惊讶我不能在这里谷歌我的答案......似乎没有其他人有这个问题。

当您运行流星服务时,js,html等打包在.meteor / local / build文件夹中,但它似乎排除了不是js或html的东西。我有一个名为“magicsets”的文件夹和一个名为“magicimgs”的文件夹,它们都不在/ local / build文件夹中。这显然是为什么当我尝试使用fs来读取文件时,它无法找到文件“magicsets / M14.json”

我尝试将magicsets文件夹放入名为“private”的文件夹中,但这并没有完成任何任务。

如何通过FS在我的服务器本地访问文件,如何通过原始URL将文件公开访问我的服务器?

我确信我错过了一些非常简单的事情,因为在SO上有许多更复杂的问题和答案,但是没有答案。感谢。

3 个答案:

答案 0 :(得分:17)

昨天发布的Meteor 0.6.5有一个新功能,可以帮助解决这个问题。

创建一个名为/private的目录,您可以使用新的Assets.getTextAssets.getBinary功能访问该目录。

然后/private目录中的内容将被捆绑到assets中名为/program/server/assets的目录中,并且网络无法访问该目录。您也不必担心使用fs。您可以使用Assets.getText代替

要将可公开访问的文件放在/public中。因此,如果a.jpg位于/public/a.jpg,则http://yourdomain.com/a.jpg

可以访问{{1}}

答案 1 :(得分:1)

如果您希望文本文件可用于Web服务器(即默认为端口3000的服务器),请在项目/ app目录的根目录中创建名为public的文件夹。删除你的文件夹和文件。然后,您就可以http://localhost:3000/magicsets/M14.json

访问它们

更新:它看起来可以覆盖捆绑器,但它确实需要更改一些核心代码,但还没有.meteorignore文件。检查这个SO答案:https://stackoverflow.com/a/16742853/105282

答案 2 :(得分:1)

要公开独立于Meteor正在执行的文件目录,您可以使用以下方法。我这样做,例如,当我需要将整个(Javascript)git repo链接到我的Meteor应用程序时,这样我就可以使用已检出的库版本。

以下适用于0.6.5。它基本上为/libOpenLayers的已检出文件夹提供服务:

connect = Npm.require('connect')

RoutePolicy.declare('/lib', 'network')

WebApp.connectHandlers
  .use(connect.bodyParser())
  .use('/lib', connect.static("/home/mao/projects/openlayers/lib"))

有关详细信息,请参阅https://github.com/meteor/meteor/issues/1229