AngularJS 1.2 $注入器:modulerr

当使用angular1.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: '/' }); } ]); 

问题是在喷油器configuration部分(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) 

如果我没有记错,这个问题开始于angular度1.1.6。

问题是由于缺lessngRoute模块。 从版本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']); 

我的错误通过在末尾添加“()”而消失

 (function(){ var home = angular.module('home',[]); home.controller('QuestionsController',function(){ console.log("controller initialized"); this.addPoll = function(){ console.log("inside function"); }; }); })(); 

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

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

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

  </head> <body ng-app="myWebSite"> <!-- My Web Site --> <p>About my web site...</p> etc ... 

而你的JavaScript看起来像这样(即应用程序名称上有一个错字 – myWebCite而不是myWebSite):

 /** Main AngularJS Web Application */ var app = angular.module('myWebCite', [ 'ngRoute' ]); /** Configure the Routes */ app.config(['$routeProvider', function ($routeProvider) { etc ... 

那么'Error:[$ injector:modulerr] angular'错误也会生成。

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

 <script src="app/modules/myModule.js"></script> 

index.html中的所有文件

如果在控制台([$injector:nomod], MINERR_ASSET:22)有这个错误,请确保在加载AngularJS之前没有包含您的应用程序代码

我正在这样做,一旦我固定了订单,错误就消失了。

对于那些使用压缩,捆绑和缩小文件的框架,确保明确定义每个依赖关系,因为这些框架倾向于重命名您的variables。 使用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: '/' }); }); 

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

阅读更多关于Angular Dependency Annotation的信息。

 add to link <script src="ajax/libs/angular.js/1.3.0/angular-route.min.js"></script> var app = angular.module('apps', [ 'ngRoute' ]); 

我刚刚经历了同样的错误,在我的情况下,它是由angular.module的第二个参数angular.module – 希望这可能会帮助有同样问题的人。

angular.module('MyApp');

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

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

解决scheme: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> 

除了下面的答案,如果你有控制台( [$injector:nomod]MINERR_ASSET:22 )这个错误,但一切似乎工作正常,请确保您没有重复包括在您的index.html。

因为如果你有重复包含的文件,使用这个模块,并且在实际模块声明的文件之前包含这个错误,也会引发这个错误。

此错误的另一个触发器是“”。 在你的“其他”或者你的路线定义中的任何其他路线之前:

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

又一次被全面阻止。 得爱JS!

如果你经历了angularjs的官方教程https://docs.angularjs.org/tutorial/step_07

注意:从AngularJS版本1.2开始,ngRoute在它自己的模块中,并且必须通过加载我们通过上面的Bower下载的额外的angular-route.js文件来加载。

另请注意从ngRoute api https://docs.angularjs.org/api/ngRoute

安装首先在你的HTML中包含angular-route.js:

您可以从以下位置下载此文件:

Google CDN eg //ajax.googleapis.com/ajax/libs/angularjs/XYZ/angular-route.js Bower eg bower install angular-route @ XYZ code.angularjs.org eg“//code.angularjs.org/XYZ/ angular-route.js“其中XYZ是您正在运行的AngularJS版本。

然后通过将模块添加为相关模块来加载模块:

angular.module('app',['ngRoute']); 有了这个,你已经准备好开始了!

约翰·帕帕(John Papa)在这个相当晦涩的评论中提出了我的问题:有时,当你得到这个错误时,这意味着你缺less一个文件。 其他时候则表示模块在使用后被定义。 解决这个问题的一种方法是命名模块文件* .module.js并加载它们。

我的问题是在config.xml中。 更改:

 <access origin="*" launch-external="yes"/> 

 <access origin="*"/> 

修复。

它是一个注射器错误。 您可能使用了很多JavaScript文件,因此注入器可能会丢失。

有些在这里:

 var app = angular.module('app', ['ngSanitize', 'ui.router', 'pascalprecht.translate', 'ngResource', 'ngMaterial', 'angularMoment','md.data.table', 'angularFileUpload', 'ngMessages', 'ui.utils.masks', 'angular-sortable-view', 'mdPickers','ngDraggable','as.sortable', 'ngAnimate', 'ngTouch'] ); 

请检查你需要插入你的app.js注射器