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
注射器