如何在Node中的变量定义中正确调用多个环境变量

时间:2015-07-27 02:09:48

标签: node.js express environment-variables

我有两个环境变量,我已保存在本地local.env.js文件中。我想在以下代码中使用它们代替用户名和密码:

var admins = {
  'frank': { password: 'mypassword' },
   };

当我使用下面的代码时,出现错误(Unexpected token .):

var admins = {
    process.env.BASIC_AUTH_USER: {password: process.env.BASIC_AUTH_PASSWORD},
    };

有关如何正确执行此操作的任何建议吗?

3 个答案:

答案 0 :(得分:1)

您可以使用array-like-notation,如下所示:

var admins = {};

admins[process.env.BASIC_AUTH_USER] = {
    password: process.env.BASIC_AUTH_PASSWORD
};

如果BASIC_AUTH_USER"Frank"BASIC_AUTH_PASSWORD为" potatosalad"然后你会得到一个像这样的对象:

admins: {
    Frank: {
        password: 'potatosalad'
    }
}

答案 1 :(得分:1)

试试这个 <form autocomplete='off'>

答案 2 :(得分:1)

在ES5及更早版本中,静态对象声明不能使用&#34;计算&#34;属性名称的值 - 它必须是字符串文字。因此,您必须使用实际的代码行来使用obj[computedPropName] = value;语法分配属性。在您的具体情况下,这将是这样的:

var admins = {};
admins[process.env.BASIC_AUTH_USER] = {password: process.env.BASIC_AUTH_PASSWORD};

在ES6中,如果将它包含在数组语法中,则可以在静态声明中使用计算值:

var admins = {[process.env.BASIC_AUTH_USER]: {password: process.env.BASIC_AUTH_PASSWORD}};

有关此功能的进一步说明,请参阅this description of new ES6 featuresthis MDN reference

部分ES6在一些最新版本的浏览器中可用,在node.js等运行时环境中,当然,您可以使用转换器在ES6中编码,但是可以转换为ES5兼容代码以获得许多功能。当然,我们有一种方法可以依靠本机ES6支持一般的跨浏览器使用(因此现在对转换器感兴趣)。