我在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网址,一切都很好.
根据官方Meteor文档,我可以使用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
?我有什么想法可以解决这个问题?
文档中的重点是:
直接运行服务器时(例如从捆绑包中),您可以通过将JSON直接放入METEOR_SETTINGS环境变量来指定设置.
当他们说"直接运行您的服务器(例如从捆绑中)"时,他们意味着使用meteor构建,然后使用节点运行生成的bundle.meteor命令不会按设计选择METEOR_SETTINGS,因为METEOR_SETTINGS仅用于生产.
对于亚马逊,尝试这样的事情:
METEOR_SETTINGS={"public": {"key": "ABC"}} node main.js
在命令中设置环境变量以运行meteor应用程序.不确定这是否适用于亚马逊.