2012-10-02 3 views
1

RequireJS 2.0.6을 사용하고 있습니다. 그리고 때로는 제 라이브러리 (amplifyjs) 중 하나에 문제가 있습니다.RequireJS 로딩 문제 (패키지 포함)

프로젝트 :

libs/ 
    amplify.js 
    handlebars.js 
    jquery.js 
    require.js 
packages/ 
    core/ 
     main.js 
index.html 
main.js 

내 main.js :

require.config({ 
    paths: { 
     'jquery': '../libs/jquery', 
     'amplify': '../libs/amplify', 
     'handlebars': '../libs/handlebars' 
    }, 
    shim: { 
     'jquery': { 
      exports: '$' 
     }, 
     'amplify': { 
      deps: ['jquery'], 
      exports: 'amplify' 
     }, 
     'handlebars': { 
      exports: 'handlebars' 
     } 
    }, 
    packages: ['core'], 
    baseUrl: './packages/' 
}); 

require(['jquery', 'amplify', 'handlebars', 'core'], function() { 
}); 

에 Index.html : 시간의

<script type="text/javascript" data-main="main" src="libs/require.js"></script> 

75 %가 작동하지만 때로는이 오류를 얻을 :

GET http://localhost:8888/aa/test/packages/libs/amplify.js 404 (Not Found) 
Uncaught Error: Script error 
    http://requirejs.org/docs/errors.html#scripterror 

경로가 잘못되었습니다! 그러나 나는 이것이 왜 일어나는지를 알 수 없다. 왜 때로는?

(나는이 패키지에 뭔가를 가지고 확신하지만, 그 않는 이유는 아무 생각이 없음)

+0

경로 별명을 사용하지 않고도 amplify를 종속 파일로 호출 하시겠습니까? –

+0

아니요, 페이지를 새로 고침하고이 오류가 발생합니다. amplify의 유일한 호출은 require 메소드에 있습니다. – macpie

답변

3

나는 그것을 할 수있는 또 다른 방법을 생각하고 그것을 작동합니다! requirejs로드 a를 CommonJS Packages 디렉토리 구조에 모듈 및 자체 RequireJS가 이해할 수있는 모듈 형식이어야 모듈을 지원하기 때문에

require.config({ 
    paths: { 
     libs: '../libs' 
    }, 
    packages: ['core'], 
    shim: { 
     'libs/amplify': { 
      deps: ['libs/jquery'], 
      exports: 'amplify' 
     }, 
     'libs/handlebars': { 
      deps: ['libs/jquery'], 
      exports: 'handlebars' 
     }, 
     'core': { 
      deps: ['libs/amplify', 'libs/handlebars'] 
     } 

    } 
}); 
+0

그 차이를 만든 것은 무엇입니까? 심의 전에 패키지 선언, 더 일반적인 경로 처리 또는 다른 것? – Micros

0

(I am pretty sure it has to do something with the package, but I have no idea why it does that)

단어 packages는 표준 CommonJS을 의미합니다.