如何在Meteor中设置环境变量(不在代码中声明它们)?

时间:2018-01-25 21:04:45

标签: javascript meteor

我已尝试在package.json中像这样宣布它们

"scripts": {
  "start": "MY_ENV=hello MY_ENV2=foo meteor"
}

但是我的代码中有undefined(在服务器端使用envs) 通过process.env

访问它们

我知道其他声明这种敏感数据的方法(比如settings.json),但我想知道如何以另一种方式做(我正在使用macos

2 个答案:

答案 0 :(得分:2)

您的应用可以使用命令行设置,但只能在服务器上使用。在客户端代码中,process.env没有它们。您可以编写Meteor方法,以便客户端可以请求环境设置。这种方法存在潜在的安全风险,因为您允许访问客户端上的服务器设置并可能将其暴露给用户。

您可以将设置放在数据库集合中,您的代码将从那里读取它们。这可能是一种更好的方法,因为每个部署都可以轻松实现不同的设置。

如果您想使用process.env,可以在命令行上执行此操作,

MY_ENV=xxx meteor --port 3010

或者你可以将它们放在像这样的shell脚本中

#!/bin/bash export MY_ENV=xxx export MY_ENV2=yyy meteor --port 3010

答案 1 :(得分:0)

@Mikkel的回答给了我很多帮助,但是Meteor的默认环境变量仍然存在问题。所以,对我有用的解决方案(在macOs上)是:

 #!/bin/bash
MONGO_URL="my-secret" 
SOME_API_KEY="my-another-secret" 
FOO=40 
BAR=25 
meteor --settings settings-local.json  --port 300

执行此.sh文件初始化所有环境变量