Dojo要求,模块加载失败时连接错误
Posted
技术标签:
【中文标题】Dojo要求,模块加载失败时连接错误【英文标题】:Dojo require, connect to error when module failed loading 【发布时间】:2012-05-04 12:54:15 【问题描述】:当我尝试加载不存在的模块时,它会失败并出现 404 错误(当然)。我想处理这个错误但不知道如何连接到“错误”事件。
根据 Dojo 文档,我应该可以使用 its micro event api 来做到这一点。
此代码不起作用。
var handle = require.on('error', function( error )
alert('Finally error')
);
require(['nonexistent/module'], function ( m )
alert('Module was loaded correctly')
);
Dojo版本为1.7.1,浏览器最新Chrome。
【问题讨论】:
像这样的require.on
处理程序会在该时间点之后为每个错误事件调用,对吗?我使用了var h = require.on('error', function (err) h.remove(); ...etc
,但这只会处理第一个错误事件,不一定是由nonexistent/module
引起的错误事件。除了在错误字符串中搜索模块名称之外,还有什么更优雅的方法可以只处理模块的错误?
【参考方案1】:
关于这个的文档是有点好奇。我可以在 xhr 要求失败后的短暂超时 (dojoConfig.waitSeconds) 后触发 'error' 事件,但仅限于异步模式,并且仅限于 Dojo 的开发版本。
为什么?好吧,只有异步模式会引发事件,看起来 CDN 构建是使用 dojo-timeout-api == 0 构建的。
您可以使用自己的自定义 (SDK) 版本的 Dojo 吗?
@mschr - 如果您使用 Dojo(每晚)而不是 Dojo 1.7.2,则您的 jsfiddle 示例有效 - 原因与上述相同。
【讨论】:
我在异步模式下使用 sdk 版本的 dojo。将 dojoConfig.waitSeconds 设置为某个值最终会引发错误。将其设置为 0 不会。也适用于 1.7.1。谢谢。 太棒了,不知道谷歌会遗漏好东西 :) 这篇文章实际上让我实现了一个长期寻求的功能!在尝试发布加载模块的进度时,监控加载程序给我带来了压力。这个事件 api 成功了【参考方案2】:用调试集试试
<script src="baseUrl/dojo/dojo.js" data-dojo-config="async:true, debug: true, debugAtAllCost:true"></script>
编辑;没有这样的运气 - 似乎文档在这里实施之前..
为了寻找解决方案而创建了一个小提琴,概念很好,我自己会喜欢使用它
http://jsfiddle.net/seeds/h6bXQ/
【讨论】:
以上是关于Dojo要求,模块加载失败时连接错误的主要内容,如果未能解决你的问题,请参考以下文章
Karma/Jasmine 测试失败并出现错误:'未捕获的错误:尚未为上下文加载模块名称“simple_test.js”:_。使用要求([])'