我在OS X系统上本地运行Meteor应用程序并使用meteor-settings.json
文件:
$ cat meteor-settings.json
{
"public": {
"s3path": "https://d2v4p3rms9rvi3.cloudfront.net"
}
}
当我按照以下方式运行流星时:
$ meteor --version
Meteor 1.2.1
$ meteor --settings meteor-settings.json
Meteor.settings.public.s3path
有预期的s3网址,一切都很棒。
根据official Meteor docs,我可以使用METEOR_SETTINGS
环境变量。问题是,当我填充并导出它时(如下所示):
$ export METEOR_SETTINGS=$(cat meteor-settings.json)
$ echo $METEOR_SETTINGS
{ "public": { "s3path": "https://d2v4p3rms9rvi3.cloudfront.net" } }
$ meteor
Meteor.settings.public
变空,并且所有基于s3-url的功能都被破坏。
不使用env变量我无法捆绑和模拟生产部署,因为afaik生产部署不能使用命令行标志(至少在AWS / EBS上)。
为什么Meteor不会填充Meteor.settings.public
?我有什么想法可以解决这个问题吗?
答案 0 :(得分:6)
文档中的重点是:
直接运行服务器时(例如从捆绑包中),您可以通过将JSON直接放入METEOR_SETTINGS环境变量来指定设置。
当他们说“直接运行服务器时(例如从捆绑中运行)”,他们意味着使用meteor构建,然后使用节点运行生成的bundle。 meteor命令不会按设计选择METEOR_SETTINGS,因为METEOR_SETTINGS仅用于生产。
对于亚马逊,尝试这样的事情:
METEOR_SETTINGS={"public": {"key": "ABC"}} node main.js
在命令中设置环境变量以运行meteor应用程序。不确定这是否适用于亚马逊。