我正在編寫一個使用require.js作爲我的加載框架的移動混合應用程序。我遇到加載錯誤的問題。我試圖做的是設置一個備用解決方案,當設備處於脫機狀態時,我無法下載我需要在屏幕上顯示地圖的Google地圖API腳本。我得到的全部是如何處理requireJs超時錯誤?
Uncaught Error: Load timeout for modules: async!http://maps.googleapis.com/maps/api/js?sensor=true
但我無法捕捉到這個錯誤並提供了一個替代實現。這是我的gmaps模塊定義
define('gmaps', ['async!http://maps.googleapis.com/maps/api/js?sensor=true'],function(){
return window.google.maps;
});
我該怎麼辦?
編輯
我設法找到一個可行的解決方案感謝您的幫助。我設置需要這樣
require.config({
paths: {
gmaps: ['http://maps.googleapis.com/maps/api/js?sensor=true', 'lib/dummymaps']
}
}
dummymaps僅僅是一個簡單的模塊:
define({
dummy: true
});
然後在我的「父」模塊,我做的:
define(["gmaps"],function(gmaps){
...
if(typeof gmaps.dummy != 'undefined' && gmaps.dummy == true){
// use a local image as map
} else {
// initialize google maps canvas
}
});
你認爲這是一個好的解決方案
編輯2:
原諒我,這不是與此代碼的工作。它總是回退到替代實現,因爲gmaps需要使用異步插件才能完全加載,並且我無法使其與插件一起工作。
不管你做什麼,絕對去協議相對URL(以//開頭),所以你不會遇到http和https的問題。這些問題是瀏覽器特定的,用戶可能會看到警告或JS文件根本不會加載。 例如:http://cdnjs.com/ – nekaab
謝謝,我終於明白了爲什麼現在使用這種類型的網址! – sangaran
我也有這個問題,如果有的話,超時錯誤在哪裏?我無法在本地或全局錯誤處理程序中捕獲它。 這是谷歌分析導致我的問題,如果超時我只是想繼續加載模塊。 –