javascript - node.js process.env : assigning process. env 属性未定义导致字符串类型?

标签 javascript node.js

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 key
    delete process.env.A;
    

希望对你有帮助

关于javascript - node.js process.env : assigning process. env 属性未定义导致字符串类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10265208/

相关文章:

javascript - 如何减少对象数组并避免覆盖字符串属性值并仅对整数值求和?

javascript - 自动完成不起作用......(AJAX+PHP+HTML+JS)

javascript - 如何使用 Facebook 等单一输入验证电子邮件或电话号码

javascript - console.log 和 valueOf

javascript - 如何显示 ng Repeat 内包含多个点的字符串的最后部分?

node.js - 如何将 Node.js Webhook 链接到 Facebook 应用程序的 Messenger API?

javascript - 如何让 eslint 为 Node js 中的整个目录工作

node.js - 是否可以使用 frontend-maven-plugin 在开发模式下启动 Web 应用程序(vuejs+springboot)?

javascript - Node 无密码发送每个 token 请求的动态正文

javascript - 如何在 querySelectorAll 返回的伪数组上使用 forEach?