2012-09-07 21 views
5

當我按F5重新加載我的應用程序有時拋出錯誤,有時它不。RequireJS作品不一致

我正在使用Chrome進行調試。有時控制檯報告這個錯誤:

Uncaught ReferenceError: unit_directionals is not defined 

有時會拋出一個引用不是在這種情況下的jQuery等被定義: 「未捕獲的ReferenceError:jQuery是沒有定義」

什麼可能是錯的,如果我有以正確的方式定義文件?

這是我在main.js代碼中的主要指標HTML指出:

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

看起來像我發佈在這裏相同的問題:http://stackoverflow.com/questions/10959095/intermittent-requirejs-load-error。 Google網上論壇上還有一個關於它的帖子:https://groups.google.com/forum/?fromgroups#!topic/requirejs/Eym3R08Bmmg。我們仍在努力尋找解決方案。 – redhotvengeance

+1

如果你找到一個解決方案,請讓我知道兄弟,將真正的傾聽它! –

+0

我們有這個問題。原來jQuery被包含了兩次,導致F5上的隨機腳本錯誤。 jQuery包含在需求中,另一個包含在MVC局部視圖的腳本標記中。我們從視圖中刪除了jQuery腳本標記,現在它工作正常;可以整天F5。真讓人頭疼! – Noobie3001

回答

10

requirejs負荷模塊異步並且可以加載順序出來 - 他們都不能保證加載按要求調用中指定的順序。如果腳本是AMD模塊,並調用define()及其依賴項,則這不是問題。

但是,如果腳本只使用瀏覽器全局變量和隱式依賴關係(如主幹和可能的句柄條),則需要shim config才能正確表示依賴項和導出值。