it-swarm.com.de

AngularJS 1,2 $ -Injektor: modulerr

Wenn der Winkel 1.2 anstelle von 1.07 verwendet wird, ist der folgende Code nicht mehr gültig. Warum?

'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: '/'
        });
    }
]);

das Problem liegt im Injektorkonfigurationsteil (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) 

Wenn ich mich recht erinnere, begann dieses Problem mit dem Winkel 1.1.6.

440
Dawid

Das Problem wurde durch die fehlende Einbindung des ngRoute-Moduls verursacht. Seit Version 1.1.6 ist es ein separater Teil:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js"></script>

var app = angular.module('myapp', ['ngRoute']);
632
Dawid

mein Fehler verschwand durch das Hinzufügen von '()' am Ende

(function(){
    var home = angular.module('home',[]);

    home.controller('QuestionsController',function(){
        console.log("controller initialized");
        this.addPoll = function(){
            console.log("inside function");
        };
    });
})();
41
arp

Eine weitere Sache, die der Liste hinzugefügt werden muss, ist das erste Ergebnis, das mit einer Google-Suche nach "Error: [$ injector: modulerr] angle" erscheint:

Wenn zwischen Ihrem App-Namen in Ihrer 'index'html' und Ihrer Javascript-App-Definition ein Konflikt besteht, kann dies ebenfalls zu diesem Fehler führen.

Zum Beispiel, wenn Ihr HTML-Code so aussieht:

    </head>
    <body ng-app="myWebSite">

        <!-- My Web Site -->
        <p>About my web site...</p>

        etc ...

Und Ihr JavaScript sieht folgendermaßen aus (d. H. Hat einen Tippfehler im App-Namen - myWebCite anstelle von myWebSite):

/** Main AngularJS Web Application */ 
var app = angular.module('myWebCite', [ 'ngRoute' ]); 

/** Configure the Routes */ 
app.config(['$routeProvider', function ($routeProvider) { 
  etc ...

dann wird auch der Fehler "Error: [$ injector: modulerr] angle" generiert.

40
Mick

Ein Noob-Fehler kann vergessen werden, das Modul js einzuschließen 

<script src="app/modules/myModule.js"></script>

dateien in der index.html überhaupt

23
otherDewi

Wenn Sie Frameworks verwenden, die Dateien komprimieren, bündeln und minimieren, stellen Sie sicher, dass Sie jede Abhängigkeit explizit definieren, da diese Frameworks dazu neigen, Ihre Variablen umzubenennen. Dies ist mir bei der Verwendung von ASP.NET BundleConfig.cs zum Bündeln meiner App-Skripts passiert.

Vor

app.config(function($routeProvider) {
    $routeProvider.
      when('/', {
          templateUrl: 'list.html',
          controller: 'ListController'
      }).
      when('/items/:itemId', {
          templateUrl: 'details.html',
          controller: 'DetailsController'
      }).
      otherwise({
          redirectTo: '/'
      });
});

Nach dem

app.config(["$routeProvider", function($routeProvider) {
    $routeProvider.
      when('/', {
          templateUrl: 'list.html',
          controller: 'ListController'
      }).
      when('/items/:itemId', {
          templateUrl: 'details.html',
          controller: 'DetailsController'
      }).
      otherwise({
          redirectTo: '/'
      });
}]);

Lesen Sie hier mehr über Angular Dependency Annotation.

13
Moses Machua

Wenn Sie diesen Fehler in Konsole ([$injector:nomod], MINERR_ASSET:22) haben, stellen Sie sicher, dass Sie Ihren Anwendungscode nicht vor dem Laden von AngularJS angeben.

Ich tat das und nachdem ich die Bestellung repariert hatte, ging der Fehler weg.

12
Jasdeep Singh

Ich habe gerade den gleichen Fehler erlebt, in meinem Fall wurde er durch das Fehlen des zweiten Parameters in angular.module Verursacht - hoffentlich kann dies jemandem mit dem gleichen Problem helfen.

angular.module('MyApp');

angular.module('MyApp', []);

8
Anth12
add to link
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0/angular-route.min.js"></script>

var app = angular.module('apps', [ 'ngRoute' ]); 
7
SirajuddinLuck

Ich hatte das gleiche Problem und versuchte alle möglichen Lösungen. Aber schließlich habe ich aus der Dokumentation erfahren, dass das Modul ngRoute nun getrennt ist. Werfen Sie einen Blick auf diesen Link

Lösung: Fügen Sie das cdn angle-route.js nach dem Skript angle.min.js hinzu

<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>
6
Bastin Robin

Ein weiterer Auslöser für diesen Fehler ist das Verlassen des "." vor Ihrem "anderweitig" oder einer anderen Route in Ihrer Routendefinition:

  app.config(['$routeProvider',
     function($routeProvider) {
        $routeProvider.
           when('/view1', {
              templateUrl: 'partials/view1.html',
              controller: 'Ctrl1'
           }).
           otherwise({
              redirectTo: '/viewCounts'
           });
     }]);

Erniedrigt durch einen Punkt. Muss JS lieben!

5
Hilary

Wenn Sie diesen Fehler in der Konsole haben ([$injector:nomod], MINERR_ASSET:22), aber alles gut zu funktionieren scheint, stellen Sie sicher, dass Sie keine duplicate-Include-Dateien in Ihrer index.html haben. 

Dieser Fehler kann auch ausgelöst werden, wenn Sie doppelte Include-Dateien der Dateien haben, die dieses Modul verwenden und vor der Datei mit der eigentlichen Moduldeklaration enthalten sind.

4
pleerock

Wenn Sie das offizielle Tutorial von anglejs/durchlaufen - https://docs.angularjs.org/tutorial/step_07

Hinweis: Ab AngularJS Version 1.2 ist ngRoute in einer eigenen Modul und muss durch Laden der zusätzlichen angle-route.js .__ geladen werden. Datei, die wir oben über Bower herunterladen.

Bitte beachten Sie auch von ngRoute api https://docs.angularjs.org/api/ngRoute

Installation Fügen Sie zunächst angle-route.js in Ihr HTML ein:

Sie können Laden Sie diese Datei von den folgenden Stellen herunter:

Google CDN, z.B. //ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-route.js Bower z.B. Bower installieren [email protected] code.angularjs.org z. B "//code.angularjs.org/X.Y.Z/angular-route.js" wobei X.Y.Z der .__ ist. AngularJS-Version, die Sie ausführen.

Laden Sie dann das Modul in Ihre Anwendung, indem Sie es als abhängiges .__ hinzufügen. Modul:

angle.module ('app', ['ngRoute']); Damit bist du bereit zu bekommen gestartet!

3
zahid9i

John Papa hat mein Problem mit this eher undeutlichem Kommentar zur Verfügung gestellt: Manchmal, wenn Sie diesen Fehler erhalten, bedeutet dies, dass Sie eine Datei vermissen. Andere Zeiten bedeuten, dass das Modul definiert wurde, nachdem es verwendet wurde. Eine Möglichkeit, dies einfach zu lösen, besteht darin, die Moduldateien * .module.js zu benennen und diese zuerst zu laden.

2
Josh

Irgendwann ist dieser Fehler aufgetreten, wenn Sie zwischen den Projekten wechseln und die Projekte auf demselben Port nacheinander ausführen. In diesem Fall gehen Sie zu Chrome Developer Tools> Network und überprüfen Sie die tatsächlich geschriebene js-Datei auf: if the file match with the workspce. Um dies zu beheben, wählen Sie Disable Cache unter Netzwerk.

0
Shashi Ranjan

Mein Problem war in der config.xml. Ändern:

<access Origin="*" launch-external="yes"/>

zu

<access Origin="*"/>

behoben.

0
Frank Conry

Nach vielen Monaten entwickelte ich wieder eine AngularJS-App (1.6.4), für die ich Chrome (PC) und Safari (MAC) zum Testen während der Entwicklung ausgewählt habe. Dieser Code präsentierte dieses Error: $ injector: modulerr Module Error bei IE 11.0.9600 (Windows 7, 32-Bit). 

Bei der Untersuchung stellte sich heraus, dass der Fehler auf forEach -Schleife zurückzuführen war. Ersetzen Sie einfach alle forEach -Schleifen durch normale für -Schleifen, damit die Dinge so wie sie sind ... 

Es war im Grunde ein IE11-Problem (beantwortete hier ) und nicht ein AngularJS-Problem, aber ich möchte diese Antwort hier einfügen, da es sich bei der Ausnahme um eine AngularJS-Ausnahme handelte. Ich hoffe, es würde einigen von uns da draußen helfen.

ähnlich. Verwenden Sie keine Lambda-Funktionen ... ersetzen Sie einfach () => {...} durch eine gute Funktion () {...}.

0
Akber Iqbal

Es ist ein Injektorfehler. Möglicherweise haben Sie viele JavaScript-Dateien, so dass der Injektor möglicherweise fehlt. 

Einige sind hier: 

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']
);

Bitte überprüfen Sie den Injektor, den Sie in Ihren app.js einfügen müssen.

0
Bipin Shilpakar