无法使用nconf加载配置json文件

时间:2016-06-24 03:30:11

标签: javascript node.js express nconf

我试图按照这里的例子: https://www.npmjs.com/package/nconf

我要做的是使用nconf加载配置json文件,但我似乎无法实际检索任何配置。我已将其导出到另一个文件,但我也尝试过直接运行此文件。我有:

var config = require('nconf');
//priority order
//1. specific overrides 
config.overrides({
  'always': 'be this value'
});

//2. process.argv
//3. process.env
config.argv().env();

config.file('development', 'development.json');
console.log(config.get('nodeServer'))

module.exports = config;

然而输出总是未定义的。我的json定义如下:

{
  "nodeServer": "http://localhost:8090",
  "port": 8090
}

并且它与config.js位于同一目录中。知道为什么会这样吗?

还要注意,在我的主server.js中我有:

var config     = require('./config/config');
console.log(config.get('port'));

并且还返回undefined。

3 个答案:

答案 0 :(得分:0)

原来我只需要这个:

  config.file('development', 
    {file: 'config/development.json'});

答案 1 :(得分:0)

具有类似问题的其他用户应考虑其节点应用程序正在执行的当前工作目录。

在我的情况下(使用Visual Studio Code),使用默认配置启动调试会话是不够的。我需要将cwd属性添加到我的启动配置中。

我的VS代码launch.config现在看起来像:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${workspaceFolder}\\dist\\index.js",
            "preLaunchTask": "tsc: build - tsconfig.json",
            "outFiles": [
                "${workspaceFolder}/dist/**/*.js"
            ],
            "cwd": "${workspaceFolder}/dist/"
        }
    ]
}

答案 2 :(得分:0)

  • 如果您的config文件夹是在项目根目录以外的其他位置定义的,则应该可以正常工作。
config.file('development', `${__dirname}/development.json`)
  • 如果您的config文件夹位于项目的根目录中,那么以下代码段应该可以正常工作
   config.file('development', 'config/development.json') 
   // should work fine