2016-11-17 3 views
0

저는 grunt 빌드 프로세스를위한 유틸리티 모듈을 빌드하려고합니다. 분명히 나는 ​​모듈 시스템의 작동 방법에 대한 혼란 스러워요, 그러나 여기에서 나는 (그것을 무관 한 이후 기능 논리를 떠나) 한 것입니다 : 그래서노드의 module.exports가 빈 객체로 다시 나타납니다.

var modifiers = require('./modifiers'); 

// later in file.... 
grunt.log.writeln(JSON.stringify(modifiers)); //outputs: {} 

: 발신 파일에서 다음

var modifiers = { 
    task: function(grunt){ 
     //logic... 
    } 
} 

var modify = function(grunt){ 
    modifiers.task(); 
} 

module.exports = { 
    modify: modify 
}; 

그리고 로그 호출은 빈 객체를 출력합니다.

Warning: modifiers.modify is not a function

내가 완전히 어떻게 작동 module.exports 실종 : modifiers.modify에 오류가 있습니다 호출? 나는 다른 파일에서 함수를 내보내는 데 사용하고 있지만 실제로 여기에 전체 private-variable 의미론이 필요합니다.

다른 물건과 함께 객체를 반환하는 자체 호출 함수에 module.exports를 설정해 보았습니다. 아무 소용이 없습니다. 수정 자 객체를 반환하려면 어떻게해야합니까? 따라서 객체를 반환하고 싶다면 확장 가능해야합니다.

도움이 될 것입니다. 감사.

답변

2

JSON.stringify()modifiers 개체가 하나의 속성 인 함수이기 때문에 JSON.stringify()에 빈 개체가 표시됩니다.

같은 시험 :

console.log(modifiers); 

또는

console.log(modifiers.modify); 

이 모듈이 제대로 작동하는지 당신이 기대하는 것을 보여줍니다.

modifiers.modify()을 호출하면 ./modifiers 모듈을로드하는 중에 오류가 발생하고 콘솔을로드 할 때 오류가 발생합니다.

+0

감사합니다. 또한 호출 된 파일에서 내 보낸 객체를 잘못 참조했습니다. 이것을 게시하면 도움이되었습니다. – dudewad

+0

알아두면 좋은 JSON.stringify에 대해 알지 못했습니다. 나는 MDN 문서를 확인했고 당신은 완전히 옳았다. 고마워요! 한번 받아 들일 수 있습니다 (10 분 정도 기다려야 함) ... – dudewad