2014-01-10 88 views
41

我遇到了Angular JS接收到錯誤的問題:Uncaught Error:[$ injector:modulerr]。 我的JS文件看起來

angular.module('MyApp', ['ngRoute']); 
angular.module('MyApp',['ngResource']); 
function TwitterCtrl($scope,$resource){ 
} 

我還包括角路由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"> 

角文件說,這個問題是http://docs.angularjs.org/api/ngRoute

+1

你包含'angular-resource.js'嗎? –

+0

你的ngResource指向哪裏? – felipekm

+14

如果您不確定哪個模塊丟失,請使用非縮小的angular.js,它會給出可讀的錯誤消息: – briankip

回答

39

嘗試添加此:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular-resource.min.js"></script> 
+41

爲什麼? @ ig-melnyk – Benedikt

+0

^^我認爲是因爲OP已經注入了這個,但是依賴沒有被加載? – Mahesh

31

嘗試添加:

<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){ 
} 

你應該因爲你當前的代碼,你要創建一個新的MyApp模塊覆蓋上一個叫angular.module只具有所有依賴性一次。

angular documentation

Beware that using angular.module('myModule', []) will create the module myModule and overwrite any existing module named myModule. Use angular.module('myModule') to retrieve an existing module.

+0

thx的文檔引用 - 它幫助我解決了一個與此問題非常相似的問題。 –

+1

@ernd enson:很高興聽到這個消息。 –

+0

是的! Everyon一直引用rgRoute - 資源也有它! –

1

確定,如果你得到一個Uncaught Error: [$injector:modulerr]和角模塊是在告訴你的錯誤,你有一個重複NG-應用模塊。

+0

這解決了我的問題。我錯誤地把''當它應該是''..謝謝 – wasatchwizard

0

該錯誤表示依賴注入器無法找到依賴項'ngResource'。接受答案中的腳本標記提供了這種依賴關係。

如果您在依賴關係中添加了任何自定義模塊,但未添加腳本標記以包含包含依賴項的'.js'文件,您也會得到相同的錯誤。

11

確保你的功能被包裹在一個封閉,完整的額外的()在最後:

(function(){                  

    var app = angular.module('myApp', []);          


})(); 
+0

我試過這個和所有的全局變量,比如'應用程序「成爲本地應用程序,不再適用於其他應用程序! – Zarepheth

3

問題是由缺少包容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大衛回答

31

在發展我建議你使用不精縮distributives: 而且所有的錯誤變得更豐富! 相反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"> 
+2

好的提示,謝謝!我錯過了angular-animate.js。但是不管你錯過了什麼,如果你做Ulmer-Morozov在這裏寫的東西,你會被告知,除非你使用min-files。寶貴的經驗教訓。 –

+1

優秀的提示!我個人使用#if DEBUG來管理我。 –

+0

真的很棒的提示。自從我開始研究角回週期以來,我一直感到沮喪,因爲診斷非常糟糕。 DUH! – itchyspacesuit

5

我以前有同樣的問題,但我意識到,我並沒有包括「app.js」在我的主頁(主要應用)(index.html) 。 因此,即使包含AngularJS所需的所有依賴關係,也可能在控制檯中出現該錯誤。因此,請務必確保在主頁面中包含必要的文件,並且不應該有這個問題。

希望這會有所幫助。

0

只是拋出這個,以防萬一它有幫助,我有這個問題,原因是因爲當我捆綁我的Angular的東西我引用主應用程序文件爲「AngularWebApp」而不是「AngularWebApp.js」,希望這幫助。

2

我得到這個錯誤,因爲我有一個未加載的另一個模塊的依賴關係。

angular.module("app", ["kendo.directives"]).controller("MyCtrl", function(){}...

所以即使我有所有的Angular模塊,我沒有劍道一個。

1

我有完全相同的問題,什麼解決它是刪除關閉:

$(function(){ 
    var app = angular.module("myApp", []); 
    app.controller('myController', function(){ 
     ... 
    }); 
}); 

變爲:

var app = angular.module("myApp", []); 
app.controller('myController', function(){ 
    ... 
}); 
1

確保保存您的角度變量.module結構正確。

這將失敗,並 「未捕獲錯誤:[$注射器:modulerr]」:

var angApp = angular.module("angApp"); 

這工作:

var angApp = angular.module("angApp", []); 

這是一個狡猾的一個,因爲錯誤消息不點特別是一件事(因此答案各式各樣)。此外,大多數js linters不會了解詳情。堅持下去!

1

我有同樣的問題。你應該像這樣的任何功能之外鍵入您的角的js代碼:

$(document).ready(function() {}); 
0

我也有同樣的問題,我剛纔刪除以下從BundleConfig.cs文件的代碼行,我的代碼是工作的罰款。

BundleTable.EnableOptimizations = true;

相關問題