我很惊讶我不能在这里谷歌我的答案......似乎没有其他人有这个问题。
当您运行流星服务时,js,html等打包在.meteor / local / build文件夹中,但它似乎排除了不是js或html的东西。我有一个名为“magicsets”的文件夹和一个名为“magicimgs”的文件夹,它们都不在/ local / build文件夹中。这显然是为什么当我尝试使用fs来读取文件时,它无法找到文件“magicsets / M14.json”
我尝试将magicsets文件夹放入名为“private”的文件夹中,但这并没有完成任何任务。
如何通过FS在我的服务器本地访问文件,如何通过原始URL将文件公开访问我的服务器?
我确信我错过了一些非常简单的事情,因为在SO上有许多更复杂的问题和答案,但是没有答案。感谢。
答案 0 :(得分:17)
昨天发布的Meteor 0.6.5有一个新功能,可以帮助解决这个问题。
创建一个名为/private
的目录,您可以使用新的Assets.getText或Assets.getBinary功能访问该目录。
然后/private
目录中的内容将被捆绑到assets
中名为/program/server/assets
的目录中,并且网络无法访问该目录。您也不必担心使用fs
。您可以使用Assets.getText
代替
要将可公开访问的文件放在/public
中。因此,如果a.jpg
位于/public/a.jpg
,则http://yourdomain.com/a.jpg
答案 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。它基本上为/lib
中OpenLayers的已检出文件夹提供服务:
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。