传递配置文件到我的Meteor应用程序的生产实例中?

8

在我的本地机器上,当我启动Meteor应用程序时,我通过传递一个json文件来指定应用程序设置,就像这样

meteor --settings local.json

这似乎是有效的。但是,根据meteor.com的文档(http://docs.meteor.com/#deploying),当你在自己的基础设施中部署应用程序时,你需要使用 "meteor bundle" 打包应用程序,然后像下面这样作为节点实例运行它。

PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp node bundle/main.js

我能够完成这项任务,并将应用程序部署在我的服务器上。然而,我不确定我该如何传递包含我的配置设置的json文件。

PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp --settings prod.json node bundle/main.js
PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp node bundle/main.js --settings prod.json

--settings 是 Meteor 的东西还是 Node 的东西?如果是后者,我该如何传递我的 JSON 文件?


3
为什么这个问题被搁置了?这是一个合法的问题。 - Tarang
3
@Akshat:你已经回答了我的问题,所以我不再困扰,但是确实有点奇怪这个问题为什么会被 Stack Overflow 认为是离题的。 - Diskdrive
1
@JakeGould:也许您匆忙关闭了此问题;该问题绝对是相关的。请重新审查。 - Dan Dascalescu
3
鉴于您似乎没有回答过有关Meteor的任何问题,我认为您的关闭投票可能是错误的——第一次投票总会引发其他人的跟随。我投票支持重新开放。 - Andrew Mao
3
这个问题被关闭是因为它被认为是一个“计算机通用”问题。一个关于特定框架的具体配置问题怎么会成为一个“计算机通用”问题呢?这些关闭者难道没有更好的事情可做吗?我也遇到了这个问题,所以我很高兴它重新被打开了。 - JohnAllen
显示剩余4条评论
2个回答

11

--settings 是 Meteor 中的一个选项。

在生产环境中,您可以使用环境变量代替 --settings,因为该选项仅用于 meteor run 或者 meteor 命令。

根据文档:

Meteor.settings 包含特定于部署的配置选项。您可以通过将 --settings 选项(它接受包含 JSON 数据的文件)传递给 meteor run 或 meteor deploy 来初始化设置,或者通过将服务器进程的 METEOR_SETTINGS 环境变量设置为 JSON 字符串来进行设置。

因此,以下类似的方法可以起作用:

PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp METEOR_SETTINGS=$(cat prod.json) node bundle/main.js

谢谢,METEOR_SETTINGS是否可以接受文件而不是字符串呢?输入METEOR_SETTINGS=prod.json会报错"Error: Settings are not valid JSON"。输入METEOR_SETTINGS={}可启动应用,但没有设置配置。 - Diskdrive
是的,这是可能的,请查看屏幕录像 https://www.eventedmind.com/feed/sg3ejYnmhxpBNoWan ,你基本上使用 $(cat file.json) - Tarang
2
@Diskdrive:你需要在Meteor的问题页面上点赞(+1)来支持这个问题(https://github.com/meteor/meteor/issues/1116#issuecomment-48982351),以便通过配置文件传递设置。我也发现通过一行环境变量传递复杂的设置非常麻烦,而且大多数情况下是不可能的。 - Dan Dascalescu
1
你确定你不需要对那个“cat”进行任何转义吗? - Mitar

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接