2014-04-09 16 views
5

non riuscivo a trovare una risposta per il mio problema su SO o Github, così mi distacco questa:Getting 'errore non rilevato: Errore di script' per una dipendenza dichiarata quando si utilizza r.js

ho creato un repo per questo problema: https://github.com/saviomuc/requireJSMultiPage

Ho provato a impostare require.js per un progetto a più pagine.

Tutto va bene quando eseguo la pagina. Ma quando cerco di ottimizzare i file con r.js sto ottenendo questo errore:

GET http://localhost:63342/requirejs/www-build/js/library.js 404 (Not Found) require.js:7 
Uncaught Error: Script error for: library 
http://requirejs.org/docs/errors.html#scripterror 

La messa a punto è come questo:

js/app/app1.js 
js/app/app1jq.js 
js/lib/require.js 
js/lib/library.js 
main-page1.js 

Attualmente require.js carica un file (main-page1 js) che contiene il codice

require(['common','app/app1','app/app1jq'], function (config) {}); 

common.js contiene

requirejs.config({ 
    paths: { 
     library: 'lib/library' 
    } 
}); 
console.log('This is the config!'); 

app1jq.js contiene

define(function (require) { 
    var library = require('library'); 
    console.log('This is dependent on library'); 
}); 

Questo potrebbe essere un problema con l'ottimizzatore? O ho fatto qualcosa di sbagliato?

Meglio e grazie in anticipo!

risposta

5

Il problema è che common non è garantito per essere caricato per primo. Pertanto, quando RequireJS arriva a require('library'), la configurazione potrebbe essere impostata o meno. Quando chiami require(['a', 'b', 'c'], function() {}) RequireJS è libero di caricare prima c o b prima o a. L'ordine non è impostato. L'unica garanzia è che tutti i moduli verranno caricati prima di chiamare il callback.

Così cambiare main-page1.js in modo che contenga:

require(['common'], function() { 
    require(['app/app1','app/app1jq']); 
}); 

Questo farà sì che common viene caricato prima di qualsiasi del codice che dipende dalla configurazione.

+1

Grazie. Questo mi porta nella giusta direzione. Ho creato un nuovo file app/page1 e referenziate da principali-page1.js 'require ([ 'comune'], function() { richiedere ([ 'app/page1']); }); ' Questo file contiene: ' define (function (richiede) {var app1 = require (' ./ app1 '), app1jq = require (' ./ app1jq '); console.log (' Questo è la pagina 1 '); }); ' E funziona =) Ho perso qualcos'altro? – Savio