2016-06-07 2 views
1

Я борюсь с тем, как приложение запускается в Express. Я объясню свой прецедент:Понимание запуска приложения ExpressJS

У меня есть модуль Configuration Manager, который используется всеми другими прикладными модулями для загрузки необходимой конфигурации. Я устанавливаю конфигурации в app.listen:

app.listen(9000, function() { 
    try 
    { 
     config_manager.setSiteConfig(); 
     console.log('settings..!!!') 
    } 
    catch(err) 
    { 
     console.log(err.stack); 
    } 
}); 

В другом модуле того же приложения я называю функцией Configuration-Manager для загрузки конфигурации, но он возвращает пустой. Код что-то вроде этого:

var config_manager = require('configuration-manager'); 
console.log(config_manager.loadConfig()); // returns empty object {} 

Я бег приложения с помощью node app.js. Сначала пустым объектом печатается ('settings..!!!'). Разве экспресс компилирует сценарий перед вызовом app.listen()? Как я могу убедиться, что моя конфигурация установлена ​​перед компиляцией/загрузкой других файлов?

ответ

0

Экспресс действительно сначала обрабатывает все утверждения в файле, в основном все, что не входит в функцию при запуске. В вашем случае var config_manager = require('configuration-manager'); console.log(config_manager.loadConfig()); // returns empty object {} выполняется до вашего app.listen, потому что вы запрашиваете конфигурацию перед app.listen.

Вы лучше от обработки конфигурации после первого времени требуется (если app.js Ваш главный файл, это означает, что в первый раз, когда она встречает require заявления, указывая на configuration-manager в любом файле).

Это должно сделать код работы:

var config_manager = require('configuration-manager'); 
try { 
    config_manager.setSiteConfig(); 
} catch(err) { 
    console.log(err.stack); 
} 
console.log(config_manager.loadConfig()); // returns empty object {} 

и затем

app.listen(9000, function() { 
    console.log('settings..!!!', config_manager.loadConfig()) // Should correctly print your config 
}); 

Если это не работает, проблема не лежит в порядке исполнения.

+0

Конфигурация загружается в отдельный файл (кроме приложения app.js). Я устанавливаю файл конфигурации для загрузки в app.listen –

Смежные вопросы