在一个非常简单的页面上获取[$ injector:modulerr];无法弄清楚为什么

时间:2014-12-10 19:34:57

标签: javascript angularjs

我非常喜欢Angular的菜鸟。而且我得到的错误是我无法弄清楚的(即使经过大量的Google搜索和摆弄)。

这是我的代码(和here it is on CodePen):

<!DOCTYPE html>

<html ng-app="ergo">
    <title>Ergo</title>
</html>

<body ng-controller="ErgoController as ergo">

    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js"></script>
    <script>
        ( function() {
            var app = angular.module( "ergo", [] );
            app.controller( "ErgoController", function() {
                // TODO
            } );
        } );
    </script>

</body>

</html>

上面的代码会产生此错误:

Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.5/$injector/modulerr?p0=ergo&p1=Error%3A%20…ogleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.5%2Fangular.min.js%3A17%3A339)

Here's a link到该错误消息的完整网址。)

网上的一些地方说,如果ngRoute模块无法加载,就会发生这种情况 - 它以前是Angular核心的一部分,但在1.2中被拆分为自己的模块。

现在,我没有在这个非常简单的页面中使用 ngRoute,所以我不明白这可能是什么问题 - 但是,嘿,我会试一试。这是我修改后的页面(以及the corresponding CodePen) - 我已经添加了另一个标记来加载ngRoute模块,还添加了&#39; ngRoute&#39;作为实例化我的模块时的依赖项:

<!DOCTYPE html>

<html ng-app="ergo">
    <title>Ergo</title>
</html>

<body ng-controller="ErgoController as ergo">

  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular-route.min.js"></script>
  <script>
      ( function() {
          var app = angular.module( "ergo", ['ngRoute'] );
          app.controller( "ErgoController", function() {
              // TODO
          } );
      } );
  </script>

</body>

</html>

我仍然得到同样的错误。

帮助?前几天我做的几乎完全相同,而且工作正常。 (不幸的是,我没有那些代码方便检查。)

次要问题:如果您在加载其中任何一个页面后查看Chrome浏览器中的错误,您会发现堆栈跟踪中包含对此JavaScript文件的引用:

http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.js

这很奇怪,因为我在<script>标记中实际加载的网址是:

http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js

(一个网址包含.min;另一个网址不包含)

我查看了网络控制台,看看angular.min.js是否动态加载angular.js(出于某些奇怪的原因),或者.min网址只是重定向未经证实的版本。似乎都不是这样。那么,为什么控制台会显示一个JavaScript文件的引用,据我所知,甚至没有加载到这个页面上?

1 个答案:

答案 0 :(得分:0)

看起来您没有调用设置角度应用的功能。

尝试调用该函数,你应该好好去:

<script>
  (function() {
     var app = angular.module( "ergo", ['ngRoute'] );
     app.controller( "ErgoController", function() {
       // TODO
     } );
   })();
</script>