Не удается загрузить файл конфигурации json с помощью nconf

Я пытаюсь следовать примеру здесь: https://www.npmjs.com/package/nconf

Я пытаюсь загрузить конфигурационный json-файл с помощью nconf, но я не могу получить ни одного из конфигов. Я экспортировал это в другой файл, но я также попытался просто запустить этот файл напрямую. Я имею:

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'));

и это также возвращает неопределенное.

2 ответа

Решение

Оказывается, мне просто нужно это:

  config.file('development', 
    {file: 'config/development.json'});
  • если ваша конфигурационная папка определена где-то еще, кроме корневого каталога проектов, следующее должно работать нормально.
config.file('development', `${__dirname}/development.json`)
  • если ваша папка конфигурации находится в корневом каталоге проектов, следующий фрагмент кода должен работать нормально
   config.file('development', 'config/development.json') 
   // should work fine  

Другие пользователи с аналогичными проблемами должны учитывать текущий рабочий каталог, в котором выполняется приложение их узла.

В моей ситуации (с использованием кода Visual Studio) запуска сеанса отладки с конфигурацией по умолчанию было недостаточно. Мне нужно было добавить cwd свойство моей конфигурации запуска.

Мой VS Code 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/"
        }
    ]
}
Другие вопросы по тегам