2013-05-23 1 views
0

그놈의 requirejs 작업을 통해 JS 모듈을 성공적으로 컴파일 할 수 있었지만 모든 shim 스크립트에서 정의되지 않았습니다. 내가 grunt requirejs:dist을 실행할 때 r.js가 제대로 shimmed 스크립트를 컴파일하지 않습니다.

requirejs: { 
    dist: { 
     options: { 
      mainConfigFile: 'src/scripts/main.js', 
      out: '<%= yeoman.dist %>/scripts/main.js', 
      paths:{ 
       "main" : "../final/src/scripts/main" 
      }, 
      include:['main'], 
      preserveLicenseComments: false, 
      useStrict: true, 
      wrap: true 
     } 
    } 
} 

이 지금은 잘 컴파일, 내 shimmed 파일을 포함 않습니다 여기 내 설정

requirejs.config({ 
    "baseUrl": "../../../components/", 
    "paths": { 
     "less": "less.js/dist/less-1.3.3", 
     "datepicker": "jquery-ui/ui/jquery.ui.datepicker", 
     "jquery": "jquery/jquery", 
     "jqueryui": "jquery-ui/ui/jquery-ui", 
     "spectrum": "spectrum/spectrum", 
     "class": "class/class", 
     "underscore": "underscore-amd/underscore", 
     "d3": "d3/d3", 
     "nv": "nvd3/nv.d3", 
     "dataTables": "datatables/dataTables" 

    }, 
    shim: { 
     less: { 
      exports: "less" 
     }, 
     jqueryui: { 
      exports: "jqueryui" 
     }, 
     spectrum: { 
      exports: "spectrum" 
     }, 
     class:{ 
      deps: [ 'jquery'], 
      exports: "class" 
     } 
    } 
}) 
여기

내 requirejs 내 Gruntfile에서 config (설정)입니다. 하지만 컴파일 된 JS를 실행하려고 할 때마다 shimmed 스크립트에 대한 액세스가 정의되지 않았습니다.

답변

0

"내 shimmed 스크립트에 대한 액세스가 정의되지 않았습니다"라는 것이 확실하지 않습니다. shimmed 스크립트가 올바른 순서로 포함되도록해야합니다. 또한 해당 스크립트에 대해 위조 모듈을 정의 해 볼 수도 있습니다. 당신은 이해할 필요가

onBuildRead: function (moduleName, path, contents) { 
    if (moduleNam === 'spectrum'){ 
     contents += '; define(' + moduleName + ', function(){ return window.spectrum; });'; 
    } 
    return contents; 
} 

, 수출은 무엇을 : 당신은 JS 구성 추가를 구축합니다. 스크립트가로드 된 후 전역 네임 스페이스에서 해당 변수를 찾습니다. 나는 'jqueryui'네임 스페이스가 있다고 생각하지 않는다. 따라서 jQuery 이후에로드해야하고 jQuery를 확장하기 때문에 항상 정의되지 않습니다. 따라서 모듈은 유용한 정보를 반환 할 수 없습니다.

도움이 되었기를 바랍니다.