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