2016-06-07 2 views
1

응용 프로그램 시작이 Express에서 어떻게 작동하는지 고심하고 있습니다.ExpressJS 응용 프로그램 시작 이해

필자는 다른 모든 응용 프로그램 모듈에서 필수 구성을로드하는 데 사용되는 구성 관리자 모듈을 사용하고 있습니다. 내가 구성 - 관리자 기능 설정을로드 전화 동일한 응용 프로그램의 다른 모듈에서

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

을하지만, 빈 반환 : 나는 app.listen에서 구성을 설정하고있다.

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

내가 node app.js를 사용하여 응용 프로그램을 실행하고 있습니다 : 코드는 다음과 같은 것입니다. 빈 객체가 먼저 인쇄 된 다음 ('settings..!!!')이 인쇄됩니다. Express가 app.listen()을 호출하기 전에 스크립트를 컴파일합니까? 컴파일/다른 파일로드 전에 구성이 설정되어 있는지 어떻게 확인합니까?

답변

0

Express는 실제로 파일의 모든 명령문을 처리합니다. 기본적으로 시작시 함수에없는 모든 명령문을 처리합니다. app.listen 전에 구성을 다시 요청하기 때문에 이 app.listen보다 먼저 실행됩니다.

당신은 (app.js이 기본 파일 인 경우,이 그것이 어떤 파일에 configuration-manager을 가리키는 require 문을 통해 오는 첫 번째 시간을 의미) 바로이 필요한 처음 후에 구성을 처리 오프 최고입니다. 이 실행 순서에 누워하지 않는 문제가 해결되지 않으면 다음

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

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

과 :

은 당신의 코드가 작동해야합니다.

+0

구성이 별도의 파일 (app.js 이외)에로드됩니다. app.listen에로드 될 설정 파일을 설정 중입니다. –