如何在 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
文件已初始化所有环境变量
我试过像这样在 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
文件已初始化所有环境变量