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

Javascript 如何在Meteor中设置环境变量(无需在代码中声明)?,javascript,meteor,Javascript,Meteor,我试着像这样在package.json中声明它们 "scripts": { "start": "MY_ENV=hello MY_ENV2=foo meteor" } 但是我的代码中有未定义的(在服务器端使用envs) 通过process.env 我知道声明此类敏感数据的其他方法(如settings.json),但我想知道如何用另一种方法(我使用的是macos)命令行设置可用于您的应用程序,但仅在服务器上可用。在客户端代码中,process.env没有它们。您可以编写Meteor方法,以便客

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

"scripts": {
  "start": "MY_ENV=hello MY_ENV2=foo meteor"
}
但是我的代码中有
未定义的
(在服务器端使用envs)
通过
process.env


我知道声明此类敏感数据的其他方法(如
settings.json
),但我想知道如何用另一种方法(我使用的是
macos

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

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

如果要使用
process.env
,可以在命令行上执行


MY_ENV=xxx流星端口3010

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

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

#!/bin/bash
导出MY_ENV=xxx
导出我的_ENV2=yyy
流星号3010端口

@Mikkel的回答对我帮助很大,但我仍然对Meteor的默认环境变量有问题。因此,对我有效的解决方案(在macOs上)是:


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

感谢您为我提供了备选方案,但我仍然想知道如何从文件中加载
env
变量。经过一些小规模的研究,我发现可以将所有环境变量放入
.sh
文件中,但我仍然不知道如何告诉
meteor
使用它您想在服务器上还是客户端上访问它们?你是如何部署你的应用程序的,因为这将带来不同。如果使用mup,只需创建一个settings.json文件,这使我在问题中提到的在服务器上使用它们变得非常容易。目前,生产不是一个大问题,因为我只是在测试。不管怎样,我想,现在我离答案更近了。如果我在控制台中键入
export X=foo
,那么我可以通过
process.env.X
访问它。我试着把我所有的环境都放到
.sh
中,并用
sh path/to/.sh
命令执行它,但是什么都没有得到!这就是我需要的