Config.get()无法从文件获取配置:“ custom-environment-variables.json” Nodejs,JavaScript

时间:2018-08-24 11:44:26

标签: javascript node.js

我正在学习如何配置Node.js App环境。为此,我正在使用config模块。

下面是我的index.js文件:

`
    const config=require('config');
    const express=require('express');
    const app=express();
    app.use(express.json()); //BUILT-IN EXPRESS MIDDLEWARE-FUNCTION

    //CONFIGURATION

    console.log('Current Working Environment:',process.env.NODE_ENV);
    console.log('Name is:', config.get('name'));
    console.log('Server is:', config.get('mail.host'));
    console.log('Password is:', config.get('mail.password'));

`

我通过Power Shell命令NODE_ENVproduction设置为$env:NODE_ENV="production"

我的config文件夹中的production.json文件是:

`{
    "name":"My Productoin Environmet",
    "mail":{
        "host": "Prod-Environment" 
    }
}` 

custom-environment-variables.json文件为:

`{
    "mail":{
        "passwrod":"app_password"
    }
}`

我通过Power Shell命令app_password12345678设置为$env:app_password="12345678" config.get()应该查看各种资源来查找此配置,包括json文件,配置文件以及环境变量。但是,每当我运行我的应用程序时,都会出现以下错误:

`throw new Error('Configuration property "' + property + '" is not defined'); Error: Configuration property "mail.password" is not defined`

如果我删除行:console.log('Password is:', config.get('mail.password'));,一切都会顺利进行。请指导我怎么解决?

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,因为我没有定义用于存储邮件服务器密码的环境变量。因此,我的建议是使用以下命令行(mac)定义用于存储密码的环境变量,然后您的代码应该可以工作。

export app_password = / *您要设置的密码* /

how to define an environment variable for storing the password of the mail server.

答案 1 :(得分:0)

在command_prompt中定义环境变量时,不要在'='符号的两侧放置空格.....

例如:

set app_password = 123456 -----> is wrong way
   
set app_password=123456 ----->   will work

答案 2 :(得分:0)

99% 的问题出在 config 文件夹中的文件名中,用于存储您的自定义变量