0

나는 내 TPL에 다음 디렉토리 구조가 있습니다Marionette.js Require.js 템플릿 경로 오류

-src 
    -assets 
     -js 
      -lib 
       [files] 
      -src 
       -templates 
        -common 
         builder_regions.tpl 

내 require.config은 다음과 같습니다

require.config({ 
    baseUrl:'src/assets/js', 
    paths: { 
     backbone:    'lib/backbone', 
     jquery:     'lib/jquery.min', 
     'jquery-ui':   'lib/jquery-ui-1.10.4.custom.min', 
     underscore:    'lib/underscore.min', 
     modernizr:    'lib/modernizr.min', 
     'magnific-popup':  'lib/magnific-popup.min', 
     text:     'src/assets/jslib/text', 
     marionette:    'lib/backbone.marionette.min', 
     tpl:     'lib/underscore-tpl' 
    }, 
    shim: { 
     jquery: { 
      exports:   '$' 
     }, 
     underscore: { 
      exports:   '_' 
     }, 
     backbone: { 
      deps:    [ 'jquery', 'underscore' ], 
      exports:   'Backbone' 
     }, 
     marionette: { 
      deps:    [ 'jquery', 'underscore', 'backbone' ], 
      exports:   'Marionette' 
     }, 
     'jquery-ui': { 
      deps:    [ 'jquery' ], 
      exports:   '$ui' 
     }, 
     'magnific-popup': { 
      deps:    [ 'jquery' ], 
      exports:   'magnificPopup' 
     }, 
     tpl:     [ 'text' ] 
    } 
}); 

내 모듈이 설정 될 때 요구를 :

define([ 'tpl!src/templates/common/builder_regions.tpl', function(Marionette, layoutTpl) { 
    console.log('did not throw'); 
}); 

나는 다음과 같은 오류 얻을 모듈에 액세스 할 때 :

GET http://localhost:3000/src/assets/js/src/tpl.js 404 (Not Found) 

require.config에 경로를 제공하면 파일 tpl.js가 참조되는 이유는 무엇입니까? 감사!

답변

0

underscore-tpl.jsthis one 인 경우 define을 단독으로 호출하기 때문에 shim 구성이 필요하지 않습니다. shim이 필요없는 무언가에 shim 구성을 사용하면 RequireJS가 이상하게 작동 할 수 있습니다.

문제와 관련없는 또 다른 문제는 여기에서보고하지만 문제가 될 수 있습니다. jQuery에는 적어도 버전 1.9 이후 shim이 필요하지 않습니다. 따라서 버전이 1.9 이상인 경우 jquery에 대한 shim을 삭제해야합니다.

0

이 시도 :

define(['marionette', 'tpl!src/templates/common/builder_regions.tpl'], function(Marionette, layoutTpl) { 
     console.log('did not throw'); 
    });