2015-10-07 31 views
0

我已閱讀此問題的答案require js loading scripts from cdn fail。但在我的情況下,這並沒有幫助。我有一個需要JS設置,我想用CDN來加載我的庫。 Require JS文檔如下所示是從CDN加載庫並將回退加載到本地文件的正確方法。要求JS,通過CDN加載庫失敗

requirejs.config({ 
    //To get timely, correct error triggers in IE, force a define/shim exports check. 
    enforceDefine: true, 
    paths: { 
     jquery: [ 
      'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min', 
      //If the CDN location fails, load from this location 
      'lib/jquery' 
     ] 
    } 
}); 


require(['jquery'], function ($) { 
}); 

我用同樣的方法,但我得到一個錯誤,而不是,下面是我的代碼

requirejs.config({ 

    baseUrl: location.protocol + '//' + location.host + '/app', 

    waitSeconds: 0, 

    paths: { 

     'jquery': ['https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min','/assets/js/vendor/jquery'], 
     'jqueryPjax': '/assets/js/vendor/jquery.pjax', 
     'jqueryUI': '/assets/js/vendor/jquery-ui.min', 

     'jqueryMousewheel': '/assets/js/jquery.mousewheel', 
     'jScrollPane': '/assets/js/jquery.jscrollpane.min', 

     'fastclick': '/assets/js/vendor/fastclick', 

     'jquerySlidebars': '/assets/js/jquery.slidebars.min', 

     'imagesLoaded': '/assets/js/imagesloaded.pkgd.min', 
     'fancyBox': '/assets/js/jquery.fancybox.pack', 
     'fancyBoxThumb': '/assets/js/jquery.fancybox-thumbs', 

     'text': '/assets/js/vendor/text', 
     'chosen': '/assets/js/vendor/chosen', 
     'bb': '/assets/js/vendor/backbone-min', 
     'underscore': '/assets/js/vendor/underscore-min', 
     'angular': '/assets/js/angular.min', 


     'ventFactory': 'base/ventFactory', 
     'util': 'base/util', 
     'dom': 'base/dom', 
     'actionHandler': 'base/actionHandler', 
     'ajax': 'base/ajax' 
    }, 

    shim: { 
     'jquery': { 
      exports: 'jQuery' 
     }, 

     'jqueryUI': { 
      deps: ['jquery'] 
     }, 

     'angular': { 
      exports: 'angular' 
     }, 

     'jqueryPjax': { 
      deps: ['jquery'], 
      exports: 'jQuery.fn.pjax' 
     }, 

     'jqueryMousewheel': { 
      deps: ['jquery'], 
      exports: 'jQuery.fn.mousewheel' 
     }, 

     'jScrollPane': { 
      deps: ['jqueryMousewheel'], 
      exports: 'jQuery.fn.jScrollPane' 
     }, 

     'jquerySlidebars': { 
      deps: ['jquery'], 
      exports: 'jquerySlidebars' 
     }, 

     'fancyBox': { 
      deps: ['jquery'], 
      exports: 'fancyBox' 
     }, 
     'fancyBoxThumb': { 
      deps: ['jquery', 'fancyBox'], 
      exports: 'fancyBoxThumb' 
     }, 
     'chosen': { 
      deps: ['jquery'], 
      exports: 'chosen' 
     } 
    } 

}); 

requirejs(['jquery', 'app'], function($, app) { 
    $(function() { 
     app.start(); 
    }); 
}); 

我剛纔提出的jQuery的變化的,現在,我給這兩個CDN URL和本地路徑,但是當我加載我的網頁我得到一個錯誤

TypeError: $el.siblings is not a function

添加上 我使用要求JS加載我的庫,但隨後在我使用的杏仁生產,它結合了所有模塊整合到一個單一的文件中,所以這與錯誤有關嗎?

任何幫助,這是高度讚賞。謝謝

+0

你好Vishi,你有什麼比這個錯誤更多嗎?這可能來自任何文件尚未... – Salketer

+0

@Salketer嘿感謝您的答覆。其實我只是把這當成一個錯誤。 我使用的是要求JS來加載我的庫,但在生產中我使用的是杏仁,它將所有模塊組合成一個單獨的文件,所以這與這個錯誤有什麼關係? – Vishi

+0

好吧,如果錯誤只發生在生產上,我會看着杏仁(我不知道)。我的猜測是,杏仁只是從CDN下載jQuery來打包你的JS,所以對CDN沒什麼大不了的。如果甚至在純RequireJS上發生錯誤,控制檯始終會提供文件和行,這可能會成爲調試的起點。 – Salketer

回答

0

Adding on I am using Require JS for loading my libs but then at the production I am using almond, which combines all modules into one single file, so has this something to do with the error ?

是的,它的確如此。杏仁不能做動態加載。換句話說,你希望杏仁加載的所有東西都必須放入一個單獨的模塊中。您不能在杏仁中使用CDN。

「無動態加載」是其list of restrictions中的第一項限制。

+0

謝謝你回答這個問題。我有些錯過了杏仁的限制列表,我很感謝你在這裏的幫助 – Vishi