Lef*_*ium 12 javascript node.js
node.js process.env对象似乎以不同于常规JavaScript对象的方式处理属性赋值.process.env在这种情况下,如何让对象像常规对象一样?
下面是说明不同分配行为的示例代码.由于某种原因,分配undefined给属性会产生一个字符串类型(仅适用于process.env):
function demo(description, dict) {
console.log(description);
dict.A = undefined;
console.log('typeof dict.A: ' + typeof dict.A + '\n');
}
demo('Passing empty object:', {});
demo('Passing process.env:', process.env);
Run Code Online (Sandbox Code Playgroud)
结果输出会有所不同,具体取决于是否传递了空对象{}或process.env对象:
$ node test.js Passing empty object: typeof dict.A: undefined Passing process.env: typeof dict.A: string
Luk*_*eGT 32
该process.env对象强制其所有属性都是字符串类型,因为环境变量必须始终是字符串.我不完全确定你的目的,但也许你可以尝试其中一个作为解决方法:
将process.env对象复制到一个新对象,然后该对象将正常运行:
envCopy = {};
for (e in process.env) envCopy[e] = process.env[e];
Run Code Online (Sandbox Code Playgroud)''如果您希望它为"空白",请分配给某个属性
process.env.A = '';
Run Code Online (Sandbox Code Playgroud)
当您将其视为布尔值时,将返回false
if (process.env.A) {
...
}
Run Code Online (Sandbox Code Playgroud)或者正如Jonathan Lonowski指出的那样,你也可以从中delete获得钥匙process.env
delete process.env.A;
Run Code Online (Sandbox Code Playgroud)希望这可以帮助
Jon*_*ski 12
发生这种情况是因为process.env强制其所有值为String:
process.env.A = undefined;
console.log(process.env.A); // 'undefined' (note the quotes)
process.env.A = true;
console.log(process.env.A); // 'true'
console.log(typeof process.env.A); // 'string'
Run Code Online (Sandbox Code Playgroud)
如果您需要删除环境变量,则必须执行以下操作delete:
function demo(description, dict) {
console.log(description);
delete dict.A;
console.log('typeof dict.A: ' + typeof dict.A + '\n');
}
demo('Passing process.env:', process.env);
// Passing process.env:
// typeof dict.A: undefined
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17828 次 |
| 最近记录: |