我有两个环境变量,我已保存在本地local.env.js文件中。我想在以下代码中使用它们代替用户名和密码:
var admins = {
'frank': { password: 'mypassword' },
};
当我使用下面的代码时,出现错误(Unexpected token .
):
var admins = {
process.env.BASIC_AUTH_USER: {password: process.env.BASIC_AUTH_PASSWORD},
};
有关如何正确执行此操作的任何建议吗?
答案 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 features和this MDN reference。
部分ES6在一些最新版本的浏览器中可用,在node.js等运行时环境中,当然,您可以使用转换器在ES6中编码,但是可以转换为ES5兼容代码以获得许多功能。当然,我们有一种方法可以依靠本机ES6支持一般的跨浏览器使用(因此现在对转换器感兴趣)。