2012-09-07 14 views
5

Po naciśnięciu klawisza F5 w celu doładowania moja aplikacja czasami wyrzuca błędy, a czasami nie.RequireJS działa niekonsekwentnie

Mam debugowanie w Chrome. Czasami raportów konsoli ten błąd:

Uncaught ReferenceError: unit_directionals is not defined 

czasami rzuca, że ​​odwołanie nie jest zdefiniowana jak w tym przypadku dla jQuery: „Uncaught ReferenceError: jQuery nie jest określenie”

Co może być źle, jeśli mam zdefiniowałeś pliki we właściwy sposób?

jest to kod mam w main.js wskazał w głównym html index:

requirejs.config({ 
    baseUrl: 'js/lib', 
    paths:{ 
     app:'../app', 
     models: '../app/models', 
     views: '../app/views' 
    } 
}) 

requirejs(
    [ 
     //load lib in this order 
     'underscore', 'handlebars', 'jquery','backbone', 'uri', 
     //load models, views... 
     'app/models/items.model', 'app/models/results.model', 
     'app/views/items.view', 'app/views/results.view', 
     'app/index' 
    ], 
    function(jQuery,$,_....) { 
     //init app 
    } 
); 
+1

Wygląda na to samo, co napisałem tutaj: http://stackoverflow.com/questions/10959095/intermittent-requirejs-load-error. W Google Groups znajduje się również wątek: https://groups.google.com/forum/?fromgroups#!topic/requirejs/Eym3R08Bmmg. Wciąż próbujemy znaleźć rozwiązanie. – redhotvengeance

+1

Jeśli znajdziesz rozwiązanie, daj mi znać, BRO, naprawdę to się zdarzy! –

+0

Mieliśmy ten problem. Okazało się, że jQuery został włączony dwukrotnie, powodując losowe błędy skryptu na F5. jQuery został dołączony jako wymagany, a inny w znaczniku skryptu w częściowym widoku MVC. Usunęliśmy znacznik skryptu jQuery z widoku i działa on poprawnie; może F5 przez cały dzień. Co za ból głowy! – Noobie3001

Odpowiedz

10

requirejs ładuje moduły asynchroniczny i można je ładować w porządku - nie są one gwarantowane, aby załadować w kolejności określonej w żądaniu wywołania. Jeśli skrypt jest modułem AMD i wywołuje metodę define() ze swoimi zależnościami, nie stanowi to problemu.

Jeśli jednak skrypt używa globalnych przeglądarek i niejawnych zależności, takich jak szkielet i prawdopodobnie kierownice, to potrzebne jest shim config do prawidłowego wyrażenia zależności i wartości eksportu.