2013-12-13 3 views
1

내 개발 환경에서 올바르게 실행되는 Closure 환경이 있습니다. 그러나 새 폴더 & 파일에서는 작동하지 않습니다.클로저 - 라이브러리가 제대로로드되지 않습니다.

예를 들어,이 테스트 스크립트를 수행하십시오

goog.require('goog.dom'); 
console.log(goog); 
console.log(goog.dom); 
goog.dom.getElement('logout').innerHTML = "Heck"; 
전부

, 플러스 HTML에서 base.js을.

첫 번째 console.log은 모든 항목이있는 개체를 표시합니다. 모든 파일은 DOM에도로드됩니다.

그러나 두 번째 콘솔 로그에는 undefined이 표시되므로 마지막 줄이 작동하지 않습니다 (분명히). Chrome 콘솔 오류는 Uncaught TypeError: Cannot call method 'getElement' of undefined입니다.

도대체 무슨 일이 벌어지고 있습니까? 시도하면 동일합니다 XhrIo. goog 개체에서 메서드를 찾지 못했습니다.

감사합니다.

답변

3

Documentation:

참고 : goog.required 기능이나 클래스를 사용하는 코드의 엔트리 포인트와 같은 스크립트 태그 에 goog.require() 문을 넣지 마십시오. goog.require() 호출은 스크립트 태그 뒤에 호출이 포함 된 문서에 코드를 추가합니다.

그래서

<script> 
    goog.require('goog.dom'); 
    console.log(goog.dom); 
</script> 

인쇄 undefined. 그러나

<script> 
    goog.require('goog.dom'); 
</script> 
<script> 
    console.log(goog.dom); 
</script> 

또는

<script> 
    goog.require('goog.dom'); 
    addEventListener('load', function() { 
     console.log(goog.dom); 
    }); 
</script> 

는 객체를 인쇄합니다.

참고로, 가능한 다른 워크 플로가 있습니다. 예를 들어, closurebuilder.py 스크립트는 필요한 모든 파일을 미리로드하는 데 도움이 될 수 있습니다.

+0

아름다운. 감사합니다. 할당 된 시간이 지나면 받아 들일 것입니다 ... – Nick

관련 문제