我是新手。只是学习/尝试将Angular与我的webapp集成(Java + jQuery + requireJS)。我没有使用任何路由器,下面是我的脚本。从其他stackoverflow我了解到这个错误是由于缺少ngRoute模块的包含。从版本1.1.6开始,它是一个单独的部分。但在我的下面的代码中,我根本不使用任何ngRouter。当我没有引用它时,为什么我会收到此错误?
错误:[$ injector:modulerr]由于以下原因无法实例化模块计数器:[$ injector:nomod]模块'计数器'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。 http://errors.angularjs.org/1.2.11/ $注射器/ NOMOD?P0 =计数器
模板:
<ul ng-app="counter" ng-controller="counterController">
<li>
<span class="ui-button-text" ng-bind="critical"></span>
</li>
<li>
<span class="ui-button-text" ng-bind="error"></span>
</li>
<li>
<span class="ui-button-text" ng-bind="warn"></span>
</li>
<li>
<span class="ui-button-text" ng-bind="note"></span>
</li>
</ul>
JS
requirejs.config({
paths : { angular: "/js/lib/angular/angular.min" },
shim : { "angular": { deps: [ "jquery"], exports: "angular" } }
});
require(["angular", "jquery"],function() {
var module = angular.module('counter', []);
module.controller('CounterController', function ($scope, $http, $timeout) {
$scope.critical = 0;
$scope.error = 0;
$scope.warn = 0;
$scope.note = 0;
function setData(d){
$scope.critical = d.critical;
$scope.error = d.error;
$scope.warn = d.warn;
$scope.note = d.note;
}
var getCounters = function() {
var config = {headers: {
'X-MY-Request': (new Date()).getMilliseconds()
}
};
$http.get('xxxxxxx', config)
.success(function(data, status, headers, config) {
setData(data);
$timeout(getCounters, 60000);
}).error(function(data, status, headers, config) {
// Handle the error
});
}
$timeout(getCounters, 500);
});
答案 0 :(得分:3)
在您的模板中,您的控制器名称具有小写的开头字母counterController
。你的js有一个大写的CounterController
。这可能是问题吗?
任何未找到的注入模块都会引发错误。不只是ngRoute。
修改强>:
我只是把一个快速的掠夺者扔在一起而没有“要求”的东西,所有的代码都是正确的。所以,你不会错过角度代码中的任何内容。所有模块都在工作。
所以问题必须在于'require'设置。我实际上从未使用它,所以无法真正帮助你。在这里查看更多Angular + Requirejs - Loading in the wrong order。
现在,如果我是你,我会一次学习一项技术。只需加载angular和jquery资源,然后学习如何使用它们。然后当你变得更加舒适时添加'require'。
答案 1 :(得分:1)
有同样的问题,要获得有关错误的更多信息,请使用{debugInfoEnabled: true}
调用bootstrap函数,如下所示:
angular.bootstrap(document.getElementById('app-root'), ['MyApp'], {debugInfoEnabled: true});
这将向控制台打印出未能实例化的下划线模块。
答案 2 :(得分:0)
如果$injector:modulerr
出现在您的测试框架中,您可能还必须在测试框架中包含该模块。对我而言,需要包含的业力和幻想:
测试/ karma.config.js
答案 3 :(得分:0)
我的root应用模块未加载时遇到此错误。
最终,我重新排序了我的依赖列表,并且错误消失了。
希望有人帮助。花了我一个小时!