【问题标题】:NodeJS - Get environment variables set using cmdNodeJS - 使用 cmd 获取环境变量集
【发布时间】:2016-07-07 06:18:23
【问题描述】:

我只是想知道是否有任何方法可以简单地读取我在 cmd 中使用 SET 设置的环境变量。 我已经阅读了有关 process.env.[ENVVAR] 的信息,但是当我 console.log 我在 cmd 中设置的变量时,它显示未定义。 在其他线程上,我读到根本不可能访问 windows env。变量。 那么究竟什么是对的呢?

【问题讨论】:

  • 您是否尝试访问在特定 cmd shell 窗口中运行 node.js 之前在 Windows cmd 环境中设置的环境变量?还是在 node.js 中使用 cmd 设置的环境变量?请详细说明您正在尝试做什么。请记住,有许多不同的环境。我们需要知道你说的是读哪一个,你想要的变量设置在哪一个。
  • 我在 Windows cmd 中使用了 SET ENVNAME=VALUE(并在 Windows 中设置了系统环境变量)。它包含我的数据库的路径,现在我想在我的应用程序(打字稿)中读取它。我对此知之甚少,所以我不确定这是否能回答您的问题。
  • 每个 cmd 窗口都是一个独立的环境。因此,在其中设置环境变量不会影响不同的 cmd 窗口。但是,您可以在 cmd 窗口中设置环境变量,然后在该窗口中,启动您的 node.js 应用程序,然后它将能够读取该环境变量。
  • 在 Windows 控制面板 > 系统 > 高级系统设置 > 高级 > 环境变量中设置的环境变量怎么样?我可以随时访问它们吗?编辑:我在启动我的应用程序时将它设置在同一个 cmd 窗口中,但它仍然显示未定义。 ://
  • Windows 控制面板 > 系统 > 高级系统设置 > 高级 > 环境变量将影响您进行更改后创建的任何命令窗口。现有的 cmd 环境或程序将看不到这些更改。

标签: node.js variables environment


【解决方案1】:

我会将我的 cmets 总结为一个答案。

当您从 cmd 窗口启动 node.js 时,会为该 node.js 进程创建当前用户环境的副本。可以通过process.env 访问该环境。

任何外部代理都不会改变该环境。一旦 node.js 进程启动,它的环境就唯一属于 node.js 进程。

通过Windows Control Panel > System > Advanced System Settings > Advanced > Environment Variables 更改 Windows 默认环境会影响将在新创建的环境(例如新创建的 cmd 窗口)中设置的变量/值。它不会影响当前打开或运行的环境。

使用process.env,可以读取自己环境中所有已有的环境变量。您可以直接修改process.env 对象(更改值、删除属性等),这些更改将被您的进程中访问process.env 的任何其他代码看到。但是在其他一些 cmd 窗口中对环境的外部更改不会影响正在运行的 node.js 程序中的环境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-23
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多