2012-10-02 6 views
1

J'utilise RequireJS 2.0.6. Et parfois j'ai un problème de dépôt avec un de ma bibliothèque (amplifyjs).Problème de chargement RequireJS (avec les paquets)

projet:

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

Mes 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% du temps, mais ça marche parfois que je reçois cette erreur:

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

Le chemin est faux! Mais je ne peux pas comprendre pourquoi cela arrive? Et pourquoi seulement parfois?

(je suis sûr qu'il doit faire quelque chose avec le paquet, mais je ne sais pas pourquoi il fait ça)

+0

Appelez-vous parfois amplifier en tant que dépendances sans utiliser l'alias de chemin? –

+0

Non, je viens d'actualiser la page et cette erreur se déclenche. Le seul appel d'amplify est dans la méthode require. – macpie

Répondre

3

Je compris une autre façon de le faire et ça marche!

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

Qu'avez-vous changé qui a fait la différence? Déclarer les paquets avant les shims, la gestion de chemin plus générique, ou autre chose? – Micros

0

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

Le mot packages fait référence aux CommonJS standards, car requirejs prend en charge les modules de chargement qui sont dans une structure de répertoires CommonJS Packages et les modules eux-mêmes devraient être dans un format de module qui RequireJS peuvent comprendre.

Questions connexes