我正在编写一个使用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
我也有这个问题,如果有的话,超时错误在哪里?我无法在本地或全局错误处理程序中捕获它。 这是谷歌分析导致我的问题,如果超时我只是想继续加载模块。 –