METEOR_SETTINGS env变量不会填充Meteor.settings

时间:2016-01-11 16:49:27

标签: meteor

我在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?我有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:6)

文档中的重点是:

  

直接运行服务器时(例如从捆绑包中),您可以通过将JSON直接放入METEOR_SETTINGS环境变量来指定设置。

当他们说“直接运行服务器时(例如从捆绑中运行)”,他们意味着使用meteor构建,然后使用节点运行生成的bundle。 meteor命令不会按设计选择METEOR_SETTINGS,因为METEOR_SETTINGS仅用于生产。

对于亚马逊,尝试这样的事情:

METEOR_SETTINGS={"public": {"key": "ABC"}} node main.js

在命令中设置环境变量以运行meteor应用程序。不确定这是否适用于亚马逊。