node.js为什么以及如何将分配给process.env的对象强制转换为字符串?

node.js为什么以及如何将分配给process.env的对象强制转换为字符串?,node.js,Node.js,因此,在处理我的应用程序时,我尝试通过在process.env中创建属性config来将我的配置分配为环境变量 然而,在使用它时,我发现node.js在分配给process.env时将对象强制转换为字符串 下面是一个示例代码来演示这一点: const config = { port: 3000, url: 'url' } process.env.config = config; console.log(process.env.config) // prints '[objec

因此,在处理我的应用程序时,我尝试通过在
process.env
中创建属性
config
来将我的配置分配为环境变量

然而,在使用它时,我发现
node.js
在分配给
process.env
时将对象强制转换为字符串

下面是一个示例代码来演示这一点:

const config = {
    port: 3000,
    url: 'url'
}

process.env.config = config;

console.log(process.env.config) // prints '[object Object]'
console.log(typeof process.env.config) // prints 'string'
发生这种情况有什么具体原因吗


另外,假设
process.env
是启动时传递给我的应用程序的对象,那么该转换是如何实现的?

process.env中的值通常来自执行环境。因此,在UNIX shell中,您可以发出类似于
MY_TEST\u VALUE=abc123 node index.js
的命令,并在
index.js
中访问值
process.env.MY_TEST\u VALUE
。因此,
process.env
中的所有内容都存储为字符串

也就是说,您可以始终在
process.env
中存储字符串化的JSON值:

process.env.CONFIG = JSON.stringify(config)
// and parse it when consuming 
parsedConfig = JSON.parse(process.env.CONFIG)

在process.env上指定属性将隐式地将值转换为字符串

为什么要铸成线

process.env属性返回包含用户环境的对象。见(7)

看看环境

变量environ指向被调用的字符串的指针数组 “环境”

因此,是的,它的级别非常低,它是来回转换的,因为
进程
是一个全局变量,它总是存储为字符串


尽量避免以这种方式定义环境变量当变量已经定义或用于使定义不同的配置更容易时,调试就更容易,也不那么困难。

我得到了初始启动存储,但一旦流程初始化,转换是如何发生的,为什么需要转换?
const config = { x : 1 };
const otherconfig = 1;

console.log(typeof config); // object
console.log(typeof otherconfig); // number

process.env.config = config;
console.log(process.env.config); // [object Object]
console.log(typeof process.env.config); // string

process.env.otherconfig = otherconfig; 
console.log(process.env.otherconfig); // 1
console.log(typeof process.env.otherconfig); // string