我在 Angular JS 收到错误时遇到问题:未捕获错误:[$injector:modulerr]。我的 JS 文件外观
angular.module('MyApp', ['ngRoute']);
angular.module('MyApp',['ngResource']);
function TwitterCtrl($scope,$resource){
}
我还包括了angular-route-js
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular-route.min.js">
Angular 文档说问题 http://docs.angularjs.org/api/ngRoute
在开发环境中,我建议您使用不缩小的发行版。所有错误都变得更加翔实!代替angular.min.js
,使用 angular.js
。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.js">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular-route.js">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular-resource.js">
尝试添加以下内容:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular-resource.min.js"></script>
尝试添加:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular-resource.min.js">
和:
angular.module('MyApp', ['ngRoute','ngResource']);
function TwitterCtrl($scope,$resource){
}
对于所有依赖项,只应调用一次angular.module
,因为使用当前代码时,您将创建一个覆盖前一个模块的新MyApp
模块。
从角度文档:
请注意,使用 angular.module('myModule', []) 将创建 模块 myModule 并覆盖任何名为 myModule 的现有模块。用 angular.module('myModule') 来检索现有模块。
确保你的函数被包裹在一个闭包中,并在末尾加上额外的():
(function(){
var app = angular.module('myApp', []);
})();
该问题是由于缺少包含 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']);
这是从以下位置获得参考: AngularJS 1.2 $injector:modulerr David 回答
我以前有同样的问题,但我意识到我没有在我的主页(index.html
)中包含" app.js
"(主应用程序)。因此,即使您包含 AngularJS 所需的所有依赖项,您最终也可能在控制台中出现该错误。因此,请始终确保在主页中包含必要的文件,并且您不应该遇到该问题。
希望这有帮助。
我遇到了同样的问题。你应该在任何函数之外键入你的 Angular js 代码,如下所示:
$( document ).ready(function() {});
我收到此错误是因为我依赖于另一个未加载的模块。
angular.module("app", ["kendo.directives"]).controller("MyCtrl", function(){}...
所以即使我有所有的 Angular 模块,我也没有剑道模块。
如果你得到一个Uncaught Error: [$injector:modulerr]
并且角度模块在错误中告诉你,你有一个重复的ng-app模块。
确保保存 angular.module 的变量结构正确。
这将失败,并显示"未捕获的错误:[$injector:modulerr]":
var angApp = angular.module("angApp");
这有效:
var angApp = angular.module("angApp", []);
这是一个偷偷摸摸的,因为错误消息并没有特别指向一件事(因此答案种类繁多)。此外,大多数 js linters 不会捕捉到细节。坚持下去!
我遇到了完全相同的问题,解决它的方法是删除关闭:
$(function(){
var app = angular.module("myApp", []);
app.controller('myController', function(){
...
});
});
成为:
var app = angular.module("myApp", []);
app.controller('myController', function(){
...
});
该错误意味着依赖项注入器无法找到依赖项"ngResource"。接受答案中的脚本标记提供此依赖项。
如果在依赖项中添加任何自定义模块,但没有添加脚本标记以包含包含依赖项的".js"文件,则也会收到相同的错误。
只是把它扔进去以防万一,我遇到了这个问题,我的原因是当我捆绑我的 Angular 东西时,我将主应用程序文件引用为"AngularWebApp"而不是"AngularWebApp.js",希望这有帮助。
我也有同样的问题,我刚刚从 BundleConfig 中删除了以下代码行.cs我的代码工作正常。
BundleTable.EnableOptimizations = true;
不要在 cdn 链接脚本标签中加载 javascript。使用单独的脚本标记来加载 AngularJs 脚本。我遇到了同样的问题,但我创建了一个单独的<script>
然后错误消失了。