node.js process.env
object 似乎处理属性分配的方式与常规 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);
根据传递的是空对象 {}
还是 process.env
对象,结果输出会有所不同:
$ node test.js Passing empty object: typeof dict.A: undefined Passing process.env: typeof dict.A: string
最佳答案
process.env
对象强制其所有属性为字符串类型,因为环境变量必须始终为字符串。我不完全确定您的目的,但也许您可以尝试其中一种解决方法:
将
process.env
对象复制到一个新对象中,然后该对象将正常运行:envCopy = {}; for (e in process.env) envCopy[e] = process.env[e];
如果您希望属性为“空白”,请将
''
分配给属性process.env.A = '';
当您将其视为 bool 值时,它将返回 false
if (process.env.A) { ... }
或者正如 Jonathan Lonowski 指出的那样,您也可以从
process.env
delete
keydelete process.env.A;
希望对你有帮助
关于javascript - node.js process.env : assigning process. env 属性未定义导致字符串类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10265208/