如何在 Meteor 中设置环境变量(无需在代码中声明)?

How to set environment variables in Meteor (without declaring them in code)?

我试过像这样在 package.json 中声明它们

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

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

访问它们

我知道声明此类敏感数据的其他方式(如 settings.json),但我想知道如何以其他方式进行声明(我正在使用 macos

您的应用可以使用命令行设置,但只能在服务器上使用。在客户端代码中,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

@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 文件已初始化所有环境变量