AngularJS 1.2 $注入器:modulerr

Daw*_*wid 444 javascript angularjs

当使用角度1.2而不是1.07时,下面的代码不再有效,为什么?

'use strict';

var app = angular.module('myapp', []);

app.config(['$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {
        $locationProvider.html5Mode(true);
        $routeProvider.
        when('/', {
            templateUrl: 'part.html',
            controller: 'MyCtrl'
        }).
        otherwise({
            redirectTo: '/'
        });
    }
]);
Run Code Online (Sandbox Code Playgroud)

问题出在注入器配置部分(app.config):

Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.0rc1/$injector/modulerr?p0=muninn&p1=Error%…eapis.com%2Fajax%2Flibs%2Fangularjs%2F1.2.0rc1%2Fangular.min.js%3A31%3A252) 
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,这个问题始于angular 1.1.6.

Daw*_*wid 635

该问题是由于缺少ngRoute模块的包含而引起的.从版本1.1.6开始,它是一个单独的部分:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js"></script>

var app = angular.module('myapp', ['ngRoute']);
Run Code Online (Sandbox Code Playgroud)

  • 如果您不确定缺少哪个模块,请使用未缩小的angular.js,它会显示一条可读的错误消息:""错误:[$ injector:nomod]模块'ngRoute'不可用!您错误拼写了模块名称或忘记了加载它.如果注册模块,请确保将依赖项指定为第二个参数."` (489认同)
  • @ arg20,你会在这里找到答案:https://github.com/angular/angular.js/commit/5599b55b04788c2e327d7551a4a699d75516dd21 (5认同)
  • 圣母我一直在寻找解决这个问题的方法.我从1.0升级到1.2并得到了这个错误.我能找到的唯一建议是确保包含angular-route.js,它就是.......不是Angular文档的粉丝.无论如何谢谢你!我投了票. (4认同)
  • 如果在定义模块时使用angular.module('myModule')而不是angular.module('myModule',[]),则可能会出现此错误.http://stackoverflow.com/questions/16260538/module-not-found-in-angularjs (4认同)
  • 嗯,我正在使用bower,它提供.map文件 - 我想知道为什么Chrome仍然显示缩小文件中的错误.感谢您的提醒,@ Mart! (2认同)

arp*_*arp 41

我的错误在最后添加'()'消失了

(function(){
    var home = angular.module('home',[]);

    home.controller('QuestionsController',function(){
        console.log("controller initialized");
        this.addPoll = function(){
            console.log("inside function");
        };
    });
})();
Run Code Online (Sandbox Code Playgroud)


Mic*_*ick 40

还有一件事要添加到列表中,因为这是谷歌搜索"错误:[$ injector:modulerr] angular"的第一个结果:

如果您的'index'html'中的应用名称与主javascript应用定义中的应用名称不匹配,则也会产生此错误.

例如,如果您的HTML看起来像这样:

    </head>
    <body ng-app="myWebSite">

        <!-- My Web Site -->
        <p>About my web site...</p>

        etc ...
Run Code Online (Sandbox Code Playgroud)

你的JavaScript看起来像这样(即应用程序名称上有拼写错误 - myWebCite而不是myWebSite):

/** Main AngularJS Web Application */ 
var app = angular.module('myWebCite', [ 'ngRoute' ]); 

/** Configure the Routes */ 
app.config(['$routeProvider', function ($routeProvider) { 
  etc ...
Run Code Online (Sandbox Code Playgroud)

然后还会生成'错误:[$ injector:modulerr] angular'错误.


oth*_*ewi 25

noob错误可能忘记包含模块js

<script src="app/modules/myModule.js"></script>
Run Code Online (Sandbox Code Playgroud)

index.html中的文件

  • 令人惊讶的是调试/错误消息的角度有多糟糕. (23认同)
  • 大声笑。我对自己说,不,我不能犯这个简单的错误。我多次通过了您的答案。但这解决了我的问题。 (3认同)

Mos*_*hua 13

对于那些使用压缩,捆绑和缩小文件的框架的人,请确保明确定义每个依赖项,因为这些框架倾向于重命名变量.在使用ASP.NET BundleConfig.cs将我的应用程序脚本捆绑在一起时发生了这种情况.

之前

app.config(function($routeProvider) {
    $routeProvider.
      when('/', {
          templateUrl: 'list.html',
          controller: 'ListController'
      }).
      when('/items/:itemId', {
          templateUrl: 'details.html',
          controller: 'DetailsController'
      }).
      otherwise({
          redirectTo: '/'
      });
});
Run Code Online (Sandbox Code Playgroud)

app.config(["$routeProvider", function($routeProvider) {
    $routeProvider.
      when('/', {
          templateUrl: 'list.html',
          controller: 'ListController'
      }).
      when('/items/:itemId', {
          templateUrl: 'details.html',
          controller: 'DetailsController'
      }).
      otherwise({
          redirectTo: '/'
      });
}]);
Run Code Online (Sandbox Code Playgroud)

在此处阅读有关Angular Dependency Annotation的更多信息.


Jas*_*ngh 12

如果在控制台中出现此错误([$injector:nomod], MINERR_ASSET:22),请确保在加载前未包含应用程序代码AngularJS

我这样做,一旦我修改了订单,错误就消失了.


Ant*_*h12 9

我刚刚遇到了同样的错误,在我的情况下,它是由于angular.module缺少第二个参数引起的- 希望这可能会帮助有同样问题的人.

angular.module('MyApp');

angular.module('MyApp', []);


小智 7

add to link
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0/angular-route.min.js"></script>

var app = angular.module('apps', [ 'ngRoute' ]); 
Run Code Online (Sandbox Code Playgroud)


Bas*_*bin 6

我有同样的问题,并尝试了所有可能的解决方案.但最后我从文档中了解到ngRoute模块现在是分开的.看看这个链接

解决方案:angular.min.js脚本之后 添加cdn angular-route.js

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script>
Run Code Online (Sandbox Code Playgroud)


Hil*_*ary 5

此错误的另一个触发器是离开"." 在您的路线定义中的"其他"或任何其他路线之前:

  app.config(['$routeProvider',
     function($routeProvider) {
        $routeProvider.
           when('/view1', {
              templateUrl: 'partials/view1.html',
              controller: 'Ctrl1'
           }).
           otherwise({
              redirectTo: '/viewCounts'
           });
     }]);
Run Code Online (Sandbox Code Playgroud)

全面停止,再一次.得爱JS!