RequireJS:如何处理传递依赖项失败?
RequireJS: How can I handle transitive dependencies failures?
我使用的是 RequireJS 2.1.15,我无法获取传递给要执行的库的 errback。这是一个说明我的问题的小样本。
define("parent", ["missing"], function(){
return new Parent();
});
require(["parent"], function(parent){
alert("parent");
}, function(err){
alert("err");
});
(对应 fiddle 处:http://jsfiddle.net/605w0ex5/2/)
当我 运行 这段代码时, require()
的成功或错误函数的 none 实际上最终被调用,但是 RequireJS 打印一条控制台消息说 Error: Script error for: missing
.
我的问题是我的 require()
呼叫似乎处于不确定状态。它既不成功也不失败,即使它明确依赖的模块之一永远不会被加载。而且永远不会加载父级,因为无法加载所依赖的模块。
问题是当我的 require()
呼叫无法满足时,我确实希望得到通知。 如何让 RequireJS 真正调用我的 errback?*
我在 Chrome 39 和 RequireJS 2.1.15 上遇到了这个问题。
我准备将其称为 RequireJS 中的错误,因为 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>
js
子目录包含 RequireJS 和一个名为 parent.js
的文件,其中包含:
define(["missing"], function(){
function Parent () {}
return new Parent();
});
使用此设置,将按预期调用 errback。我还可以将模块的名称添加到 define
中,它也适用于此。但是如果 parent
模块是像你一样创建的,那么 errback 永远不会被调用。
另一件让我愿意称它为错误的事情是,在我的一个大型应用程序中,我依赖错误反馈来正确加载模块。该应用程序在多个操作系统上的多个版本的 FF、IE、Chrome 中进行了测试,并且可以正常工作。 (而且我使用它未优化并使用 r.js
进行了优化。) 唯一我不做的事 你的代码所做的是在单个文件之外定义一个模块。
我使用的是 RequireJS 2.1.15,我无法获取传递给要执行的库的 errback。这是一个说明我的问题的小样本。
define("parent", ["missing"], function(){
return new Parent();
});
require(["parent"], function(parent){
alert("parent");
}, function(err){
alert("err");
});
(对应 fiddle 处:http://jsfiddle.net/605w0ex5/2/)
当我 运行 这段代码时, require()
的成功或错误函数的 none 实际上最终被调用,但是 RequireJS 打印一条控制台消息说 Error: Script error for: missing
.
我的问题是我的 require()
呼叫似乎处于不确定状态。它既不成功也不失败,即使它明确依赖的模块之一永远不会被加载。而且永远不会加载父级,因为无法加载所依赖的模块。
问题是当我的 require()
呼叫无法满足时,我确实希望得到通知。 如何让 RequireJS 真正调用我的 errback?*
我在 Chrome 39 和 RequireJS 2.1.15 上遇到了这个问题。
我准备将其称为 RequireJS 中的错误,因为 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>
js
子目录包含 RequireJS 和一个名为 parent.js
的文件,其中包含:
define(["missing"], function(){
function Parent () {}
return new Parent();
});
使用此设置,将按预期调用 errback。我还可以将模块的名称添加到 define
中,它也适用于此。但是如果 parent
模块是像你一样创建的,那么 errback 永远不会被调用。
另一件让我愿意称它为错误的事情是,在我的一个大型应用程序中,我依赖错误反馈来正确加载模块。该应用程序在多个操作系统上的多个版本的 FF、IE、Chrome 中进行了测试,并且可以正常工作。 (而且我使用它未优化并使用 r.js
进行了优化。) 唯一我不做的事 你的代码所做的是在单个文件之外定义一个模块。