2012-09-07 8 views
5

Wenn ich F5 drücken, um meine App neu zu laden, wirft manchmal Fehler und manchmal nicht.RequireJS funktioniert inkonsistent

Ich debuggen mit Chrome. Manchmal ist die Konsole meldet diesen Fehler:

Uncaught ReferenceError: unit_directionals is not defined 

manchmal wirft, dass ein Verweis nicht wie in diesem Fall für jquery definiert: „Uncaught Reference: jQuery definieren nicht“

Was kann falsch sein, wenn ich die Dateien richtig definiert?

dies ist der Code, den ich in den main.js in den Hauptindex html hingewiesen haben:

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

Sieht aus wie das gleiche Problem, das ich hier gepostet habe: http://stackoverflow.com/questions/10959095/intermittent-requirejs-load-error. Darüber hinaus gibt es einen Thread in Google Groups: https://groups.google.com/forum/?fromgroups#!topic/requirejs/Eym3R08Bmmg. Wir versuchen immer noch, eine Lösung zu finden. – redhotvengeance

+1

Wenn Sie eine Lösung finden, lassen Sie mich bitte wissen, Bro, wird es wirklich appetiate !!! –

+0

Wir hatten dieses Problem. Es stellte sich heraus, dass jQuery zweimal enthalten war, was zu zufälligen Skriptfehlern auf F5 führte. jQuery wurde einmal in "require" und ein anderer in ein Skript-Tag in einer MVC-Teilansicht eingeschlossen. Wir haben das jQuery-Skript-Tag aus der Ansicht entfernt und es funktioniert jetzt einwandfrei. kann F5 den ganzen Tag lang. Was für Kopfschmerzen! – Noobie3001

Antwort

10

requirejs lädt Module async und sie laden, um aus - sie laden nicht garantiert werden in der Reihenfolge, die im Request Call angegeben ist. Wenn das Skript ein AMD-Modul ist und define() mit seinen Abhängigkeiten aufruft, ist das kein Problem.

Wenn das Skript jedoch nur Browser-Globals und implizite Abhängigkeiten wie Backbone und wahrscheinlich Lenker verwendet, wird shim config benötigt, um die Abhängigkeiten und den Exportwert richtig auszudrücken.