Javascript RequireJS:我如何处理可传递依赖项失败?

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"); }); (对应小提琴位置:) 当我运行

我使用的是RequireJS 2.1.15,在获取传递给库以执行的errback时遇到问题。这里有一个小例子说明了我的问题

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();

});