读取和写入process.env值是同步的吗?

在nodejs中读取和写入环境variables是使用process.env对象完成的。

例如:

  • process.env.foo评估为env var foo
  • process.env.bar = 'blah'将env var bar的值设置为等值
  • delete process.env.baz删除环境variablesbaz

从试错看,缺乏callback,我认为这些行动是同步的,但我没有在文档中find它的参考。

在nodejs中env var access是同步的还是asynchronous的?


附录:为什么我认为这个问题是不平凡的

遵循以下注释:读取和写入环境variables可能意味着进程需要与操作系统进行通信,或执行某种阻塞I / O操作。

因此,询问环境variables是否作为本地对象存储在内存中而没有任何同步,或者以阻塞的方式发送到操作系统是有意义的。

此外,操作系统的实现可能会有所不同,官方文档对于非阻塞操作没有任何承诺。

是的,它是同步的。

你只是设置和获取一个普通对象的值。

其实这是一个正常的对象,使得你可以获得当前进程的环境variables,毕竟它们只是一些variables,用于对程序进行一些设置。 在nodejs程序读取它们之后,Nodejs为它们设置一个正常的对象。 虽然文档不写,但它写这是一个对象和以下的东西:

可以修改这个对象,但这样的修改不会反映在Node.js过程之外。 换句话说,下面的例子不起作用:

 $ node -e 'process.env.foo = "bar"' && echo $foo 

虽然以下将会:

 process.env.foo = 'bar'; console.log(process.env.foo); 

在process.env上分配一个属性会隐式地将值转换为一个string。

这足以解释你的问题。