2011-12-05 6 views
3
내가 Node.js를위한 CMS 시스템 작업입니다

, 나는 그 Node.js를위한 빠른 질문이 프로의Node.js를이

내가 모듈을 만들고 그 모듈 내에서 모듈을 필요로하고,하지만 난 경우 이 모듈을 이미 상위 모듈에 포함 시켰습니다. 필요한 모듈에 액세스 할 수 있습니까? 예를 들어

는 :

main.js 
    var fs = require('fs'); 
    var sc = require('second.js'); 


second.js 
    var fs = require('fs'); // Is there any way to use the parent modules fs object? 

단지 내 서브 모듈의 일부 같은 모듈을 포함하고 오히려 가능하다면 그렇게하고 있지 않다 보인다.

감사합니다.

답변

6

노드는 처음 모듈이 포함될 때 모듈을 캐시하므로 (즉, 모듈을 필요로하는 부작용은 두 번 실행되지 않음) 중요하지 않습니다. require.cache을 변경하여이 캐시를 강제로 지울 수 있습니다 (따라서 상기 부작용을 다시 실행하십시오). 유용한 정보

var parent = module.parent.exports; 

모듈 객체 저장 상당히 포함 :

+0

나는 이것을 읽었지만 중복 된 것처럼 보입니다. 그러나 단점이 없다면, 나는 단지 그들을 다시 포함시킬 것입니다. –

+0

각 모듈에는 명확한 "입력"(필수 및 기능 매개 변수)과 "출력"(내보내기)이 있으므로 모듈 식 시스템으로 이동하는 방법이라고 생각합니다. –

10

이 경우 현재 모듈에서 상위 모듈을 얻을 수있는 간단한 방법을 찾고 여기 온, 여기에 그 일을하는 방법 모듈을로드 한 상위 모듈에 대한 참조입니다. 당신도 그렇게 할 수 있습니다 :

var parent = module.require(module.parent.id); 
+9

'module.parent'는 특정 인스턴스의 부모가 아닌 모듈을 처음로드 한 부모를 나타냅니다. –