Javascript RequireJS:我如何处理可传递依赖项失败?
我使用的是RequireJS 2.1.15,在获取传递给库以执行的errback时遇到问题。这里有一个小例子说明了我的问题Javascript RequireJS:我如何处理可传递依赖项失败?,javascript,requirejs,amd,Javascript,Requirejs,Amd,我使用的是RequireJS 2.1.15,在获取传递给库以执行的errback时遇到问题。这里有一个小例子说明了我的问题 define("parent", ["missing"], function(){ return new Parent(); }); require(["parent"], function(parent){ alert("parent"); }, function(err){ alert("err"); }); (对应小提琴位置:) 当我运行
define("parent", ["missing"], function(){
return new Parent();
});
require(["parent"], function(parent){
alert("parent");
}, function(err){
alert("err");
});
(对应小提琴位置:)
当我运行这段代码时,require()
的成功或错误函数实际上都不会被调用,但是RequireJS会打印一条控制台消息,说error:scripterror for:missing
我这里的问题是我的require()
调用似乎处于不确定状态。它既不成功也不失败,即使它显式依赖的某个模块永远不会被加载。并且父级将永远不会加载,因为无法加载所依赖的模块
问题是当我的require()
调用无法满足时,我确实希望得到通知我如何才能让RequireJS实际回拨我的错误?*
我在Chrome 39和RequireJS 2.1.15上遇到了这个问题。我准备把它称为RequireJS中的bug,因为a)我们在FF中得到了预期的行为,b)如果我们执行以下操作,我们也会得到预期的行为 我所做的是获取您的代码并创建一个HTML页面:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8"/>
<script type="text/javascript" src="js/require.js"></script>
</head>
<body>
<script>
require.config({
baseUrl: "js"
});
require(["parent"], function(parent){
alert("parent");
}, function(err){
console.log(err);
alert("err");
});
</script>
</body>
</html>
使用此设置,将按预期调用errback。我还可以将模块的名称添加到定义中
,它也可以使用该名称。但是,如果像您那样创建了父模块
,则永远不会调用errback
另一件让我准备称之为bug的事情是,在我的一个大型应用程序中,我依赖errbacks来正确加载模块。该应用程序在多个操作系统上的FF、IE、Chrome的多个版本中进行了测试,可以正常工作。(我使用非优化和使用r.js
进行优化)我唯一没有做的事情就是在单个文件之外定义一个模块
define(["missing"], function(){
function Parent () {}
return new Parent();
});