Nodejs process.env在windows是获取的是环境变量还是用户变量?

Nodejs process.env在windows是获取的是环境变量还是用户变量?

process.env在windows是获取的是环境变量还是用户变量?谢谢。

5 回复

Node.js process.env 在 Windows 中获取的是环境变量还是用户变量?

简介

在 Node.js 中,process.env 是一个对象,用于存储当前进程的环境变量。环境变量是操作系统级别的变量,可以在系统的所有进程中访问。而用户变量通常仅限于特定用户的配置。

在 Windows 中,process.env 获取的是系统级的环境变量,而不是用户变量。这意味着当你使用 process.env 来读取环境变量时,它只会返回那些被定义为系统环境变量的值。

示例代码

// 检查是否存在某个环境变量
if (process.env.PATH) {
    console.log(`PATH 环境变量的值为: ${process.env.PATH}`);
} else {
    console.log("PATH 环境变量不存在");
}

// 设置一个新的环境变量(仅在当前进程中有效)
process.env.MY_VAR = "my_value";
console.log(`MY_VAR 环境变量的值为: ${process.env.MY_VAR}`);

// 尝试从命令行传递环境变量
const myVarFromCmd = process.argv[2];
if (myVarFromCmd) {
    process.env.MY_VAR_FROM_CMD = myVarFromCmd;
    console.log(`MY_VAR_FROM_CMD 环境变量的值为: ${process.env.MY_VAR_FROM_CMD}`);
}

解释

  1. 检查系统环境变量

    • process.env.PATH 返回系统路径变量。
  2. 设置新的环境变量

    • process.env.MY_VAR = "my_value" 在当前进程中设置一个新的环境变量 MY_VAR
  3. 从命令行传递环境变量

    • process.argv[2] 从命令行参数中获取传递的值,并将其设置为环境变量 MY_VAR_FROM_CMD

总结

process.env 主要用于访问系统环境变量,而不是用户变量。如果你需要访问用户变量,可以考虑使用 Windows 的注册表或其他方式来获取这些变量。


自己试一试不就知道了么,个人感觉应该都能获取

默认是获取环境变量,但因javascript 的特性 ,你在process.env 添加的属性也可以获取.

windows中会同时存在TMP这样的变量,你无法区分,node文档也没有写清楚。

在Windows中,process.env 获取的是系统的环境变量,而不是用户的环境变量。环境变量通常是系统级的配置信息,对所有用户都生效,而用户变量则是特定于当前用户的配置信息。

为了更直观地理解这一点,可以使用以下示例代码来查看 process.env 中包含的内容:

console.log(process.env);

执行这段代码后,你会看到输出的信息包含了各种环境变量。例如,PATH 是一个典型的环境变量,它包含了系统可执行文件的路径。

如果你需要访问用户变量,可以通过Windows的命令行工具(如PowerShell或cmd)设置并查看它们:

  1. 打开命令提示符或PowerShell。
  2. 输入 setx 命令来设置用户变量。例如:
    setx MY_USER_VAR "my user variable value"
    
  3. 输入 echo %MY_USER_VAR% 来查看用户变量。例如:
    echo %MY_USER_VAR%
    

但是需要注意的是,process.env 不会自动刷新以反映这些用户变量的变化。如果需要更新 process.env 中的内容,你需要重新启动你的Node.js进程。

总结来说,process.env 主要用于获取系统环境变量,对于用户变量则需要通过其他方式设置和访问。

回到顶部