无法使用config.get()读取节点中的自定义环境变量

时间:2019-06-01 05:31:03

标签: node.js express config

我使用config library在节点应用程序中管理我的配置文件。

我已经在终端中通过以下方式导出了我的自定义环境变量   export app_password=12345

并通过

将其映射到custom-environment-variable.json文件中
{
  "mail": {
  "password": "app_password"
   }
}

当我在index.js文件(根模块)中使用config.get('mail.password')时。

我得到了error: Configuration property "mail.password" is not defined,详细信息如下:

/Users/tzhong/Documents/vidly- 
backend/node_modules/config/lib/config.js:203
throw new Error('Configuration property "' + property + '" is not 
defined');
^

Error: Configuration property "mail.password" is not defined
    at Config.get (/Users/tzhong/Documents/vidly- 
 backend/node_modules/config/lib/config.js:203:11)

我已经使用console.log(process.env.app_password)检查我的自定义env变量是否在那里,并且app_password显示在终端中。

 Vidly evn is : Vidly backend -- development
 Vidly mail server is : dev-mail-server
 Mail-password is : 12345
 NODE_ENV is : undefined
 app: development
 Mongan enabled...
 Listenning 3000 port ...

我想使用console.log(config.get('mail.password'));在终端而不是console.log(process.env.app_password)中显示我的自定义变量 有什么建议吗?

3 个答案:

答案 0 :(得分:1)

nodejs中执行此操作的正确方法是利用.env文件。在根目录下创建一个.env文件。将环境变量及其值保留在key=value格式下,例如password=app_password

在主入口文件中,需要dotenv包,并在需要所有模块后立即在顶部加载dotenv.configure()的env变量。有关更多详细信息,请参见here

答案 1 :(得分:1)

使用多个“变量”将文件名重命名为“ custom-environment-variables.json”。

答案 2 :(得分:0)

使用 .env 代替使用配置。只需输入 npm install --save dotenv

password=some value

您可以通过以下方式访问它

require("dotenv").config();

console.log(`Password is ${process.env.password}.`);
//Output
Password is *some value*