2016-07-31 4 views
1

필자는 RequireJS로 개발해온 Backbone/Marionette 응용 프로그램을 Webpack으로 변환하려고합니다. Webpack은 내 코드를 훌륭하게 포장하지만, 패키지 JS를로드하려고하면 레이아웃의 DOM이 핵심 영역 중 하나를 찾을 수없는 오류가 발생합니다. 오류 메시지는 ""el "#content DOM에 있어야합니다"입니다. ,Webpack 백본/마리오네트 루트 레이아웃 오류

var RootLayout = Marionette.View.extend({ 
    el: 'body', 

    regions: { 
     content: '#content' 
    } 
}); 

new RootLayout().getRegion('content').show(someView); 

나는 현재 마리오네트 v3.0.0 - pre.3 함께 일하고 있어요 :

HTML :

<!DOCTYPE HTML> 
<html lang="en"> 
    <head> 
     <script type="text/javascript" src="/public/app/bundle.js"></script> 
    </head> 
    <body> 
     <div id="content" class="content"></div> 
    </body> 
</html> 

JS

A는 내 소스의 버전은 다음 밖으로 스텁 그러나 Webpack으로 전환하기 전에는 어떤 문제도 없었습니다. 관련성이있을 수도 있고 그렇지 않을 수도 있습니다. 문제를 해결할 수있는 방법에 대한 아이디어?

감사

+0

나는 물건을 바꿔 보았고, 내 Marionette.Application에 루트 앱 엘을 정의했다. 거기에 같은 오류가있다. 백본이 jquery를 사용하여 무언가가 엉망이라고 생각하게 만듭니다. 어떤 이유로 든 중단 점이 handlebars.js에 나타나기 때문에 디버깅하는 데 문제가 있습니다. –

답변

0

내가 내 init.js로 파일에 대한 변경 사항 중 하나는 어떻게 든 문제를 발생 밝혀졌습니다. 중첩 된 의존성을 올바른 순서로로드하려면 중첩 요구를 사용하고 청크 출력을 변경하는 방식을 전환했습니다. 이 변경 사항을 되 돌리면 문제가 해결되었습니다.

편집 : 노드 서버에서 실행 중이므로 내 RequireJS 모듈 정의를 CommonJS로 변환하기로 결정했기 때문에 내 응용 프로그램을 변환 할 수있는 길을 더 멀리 밟았습니다. 몇 시간 동안 벽에 머리를 두근 거리게 한 후, 실제로 HTML 요소가로드되기 전에 내보기가 DOM에 연결된다는 문제가 있다는 것을 깨달았습니다. 내 init 코드를 둘러싼 간단한 $ (document) .ready 래퍼가 실제 솔루션이었다. (실제로 웹팩 번들의 스크립트 태그를 HTML의 맨 아래로 옮겼다.) 012JB_KoreanCommunity_Korean_DomainJS는 당신이 DOM을 사용할 준비가되어 있는지 확인하지 않아도되지만, CommonJS는 그렇지 않다. 비동기 대 동기화.