有没有办法在​​Node.js​​代码中读取环境变量?

例如,例如Python的​​os.environ['HOME']​​ 。



#1楼

如果要使用在Node.js程序中生成的字符串键(例如​​var v = 'HOME'​​ ,则可以使用​​process.env[v]​​ 。

否则,必须在程序中对​​process.env.VARNAME​​进行硬编码。



#2楼

使用​​Node.js时​​ ,可以通过键从​​process.env​​对象中检索环境变量:

例如

  1.  

    var mode = process.env.NODE_ENV;
  2.  

    var apiKey = process.env.apiKey; // '42348901293989849243'

这是解释​​在node.js中设置环境变量​​的答案



#3楼

process.env.ENV_VARIABLE


其中​​ENV_VARIABLE​​是您要访问的变量的名称。

有关​​process.env​​请参见​​Node.js文档​​ 。



#4楼

您可以使用​​env​​包来管理每个项目的环境变量:

  • 在项目目录下创建一个​​.env​​文件,并将所有变量放在此处。
  • 将此行添加到应用程序条目文件的顶部:
    ​require('dotenv').config();​

做完了 现在,您可以使用​​process.env.ENV_NAME​​访问环境变量。



#5楼

要在Node.JS中检索环境变量,可以使用process.env.VARIABLE_NAME ,但不要忘记在process.env上分配属性会将其隐式转换为字符串。

避免布尔逻辑

即使您的.env文件定义了SHOULD_SEND = false或SHOULD_SEND = 0之类的变量,这些值也将转换为字符串 (分别为“ false”和“ 0” ),并且不会解释为布尔值。

  1.  

    if (process.env.SHOULD_SEND) {
  2.  

    mailer.send();
  3.  

    } else {
  4.  

    console.log("this won't be reached with values like false and 0");
  5.  

    }

相反,您应该进行显式检查。 我发现,取决于环境名称会走很长一段路。

  1.  

    db.connect({
  2.  

    debug: process.env.NODE_ENV === 'development'
  3.  

    });


#6楼

为什么不在​​.bash_profile​​文件的Users目录中使用它们,这样就不必将任何带有变量的文件推入生产环境了

 

注意:

有时候在/etc/profile加了环境变量,也source过了,但nodejs程序通过process.env.xxx 显示undefined。这时候我们需要重启服务器,重启过后就找到了