Angular JS 未捕获错误:[$injector:modulerr]



我在 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>然后错误消失了。

最新更新