2016-06-13 2 views
0

NodeJS 응용 프로그램에서 외부 파일에서 동적으로 구성 데이터 (생성 될 보고서)를로드하고 싶습니다. require ('path/config')를 사용하여 정적으로로드 할 수 있습니다.NodeJS에서 외부 구성 파일을 동적으로로드하는 방법

그러나 일정한 일정으로 새로 고쳐야하는 구성 부분이 있습니다. 모든 구성을 복잡하게 만들려면 이러한 구성 파일에 실행 가능해야하는 기능이 있어야합니다. 다음과 같이

하나 개는 이러한 보고서는 같습니다

const report = { 
    name : 'Report 3', 
    description : 'Very simple report.', 
    // Some properties 
    preprocessor : function() { 
    }, 
    // Some more properties 
}; 

module.exports = report; 

가 기본적으로 다시로드되지 않은 보고서를 다시로드 할 필요 사용. 내가 뭔가를 바꿔도 똑같이 유지됩니다. (이유 : require()가 캐싱을 사용하고 올바르게 수행함)

실행 가능 기능이 포함 된 외부 구성 파일을 다시로드하는 좋은 방법은 무엇입니까?

+0

다른 모든 기능을 실행하는 report.js의 추가 기능을 사용하지 않는 이유는 무엇입니까? report.js가 필요하며 원하는 모든 일정에 새 함수를 호출하는 제한 시간을 설정하십시오. – Cruiser

답변

0

나는 fs을 사용할 것입니다. 구성 파일을 완전히 제어 할 수 있다면 (그렇지 않으면 위험합니다) eval을 사용할 수 있습니다.

var fs = require('fs'); 

var file = fs.readFileSync(filename); 
var module = {} 
eval(file); 

// You can access report in module.exports 

응용 프로그램을 차단하지 않으려면 (일반적으로 권장) 당신은 the async version를 사용하여 콜백을 제공해야한다.

+0

JSON.parse 불행히도 JSON 만 실행 가능한 JavaScript를 처리 할 수 ​​없습니다. –

+0

유감스럽게 생각합니다. 나는 eval을 사용하기 위해 답장을 갱신했다. –

+0

eval 문제 : 사용할 개체를 반환하지 않습니다. –

0

서킷 캐싱 문제로, 이제 라이브러리 require-without-cache을 사용합니다. 그 일을하는 것처럼 보입니다.

관련 문제