AngularJS 1.2 $ injector: modulerr

Ao usar o angular 1.2 em vez de 1.07, o seguinte trecho de código não é mais válido, por quê?

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

o problema está na parte de configuração do injetor (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) 

Se bem me lembro este problema começou com 1.1.6 angular.

O problema foi causado pela falta de inclusão do módulo ngRoute. Desde a versão 1.1.6 é uma parte separada:

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

meu erro desapareceu, adicionando este ‘()’ no final

 (function(){ var home = angular.module('home',[]); home.controller('QuestionsController',function(){ console.log("controller initialized"); this.addPoll = function(){ console.log("inside function"); }; }); })(); 

Mais uma coisa para adicionar à lista, pois este é o primeiro resultado que surge com uma pesquisa no google de ‘Error: [$ injector: modulerr] angular’:

Se você tiver uma incompatibilidade entre o nome do seu aplicativo no seu ‘index’html’ e na sua definição principal de aplicativo de javascript, isso também poderá gerar esse erro.

Por exemplo, se o seu HTML se parece com isso:

     

About my web site...

etc ...

E o seu JavaScript se parece com isso (ou seja, tem um erro de digitação no nome do aplicativo – myWebCite em vez de myWebSite):

 /** Main AngularJS Web Application */ var app = angular.module('myWebCite', [ 'ngRoute' ]); /** Configure the Routes */ app.config(['$routeProvider', function ($routeProvider) { etc ... 

então o erro ‘Error: [$ injector: modulerr] angular’ será gerado também.

Um erro noob pode estar esquecendo de include o módulo js

  

arquivos no index.html em tudo

Para aqueles que usam estruturas que compactam, empacotam e diminuem arquivos, certifique-se de definir cada dependência explicitamente, pois essas estruturas tendem a renomear suas variables. Isso aconteceu comigo ao usar o ASP.NET BundleConfig.cs para agrupar meus scripts de aplicativo.

Antes

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

Depois de

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

Leia mais aqui sobre Anotação de Dependência Angular.

Se você tiver este erro no console ([$injector:nomod], MINERR_ASSET:22) , certifique-se de não include o código do aplicativo antes de carregar o AngularJS

Eu estava fazendo isso e uma vez que eu consertei o pedido, o erro foi embora.

Acabei de experimentar o mesmo erro, no meu caso, foi causado pelo segundo parâmetro em angular.module estar ausente – espero que isso possa ajudar alguém com o mesmo problema.

angular.module('MyApp');

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

 add to link  var app = angular.module('apps', [ 'ngRoute' ]); 

Eu tive o mesmo problema e tentei todas as soluções possíveis. Mas finalmente vim a saber da documentação que o módulo ngRoute está agora separado. Dê uma olhada neste link

Solução: Adicione o cdn angular-route.js após o script angular.min.js

   

Outro gatilho para esse erro é deixar o “.” antes do seu “de outra forma” ou qualquer outra rota na sua definição de rota:

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

Mortificado por um ponto final, mais uma vez. Tem que amar JS!

Além de responder abaixo, se você tiver esse erro no console ( [$injector:nomod] , MINERR_ASSET:22 ), mas tudo parece funcionar bem, certifique-se de que você não tem duplicado inclui no seu index.html.

Porque esse erro também pode ser gerado se você tiver inclusões duplicadas dos arquivos, que usam este módulo e são incluídos antes do arquivo com a declaração do módulo real.

Se você passar pelo tutorial oficial do angularjs https://docs.angularjs.org/tutorial/step_07

Nota: Começando com o AngularJS versão 1.2, o ngRoute está em seu próprio módulo e deve ser carregado carregando o arquivo angular-route.js adicional, que nós baixamos via Bower acima.

Por favor, observe também que ngRoute api https://docs.angularjs.org/api/ngRoute

A primeira instalação inclui angular-route.js no seu HTML:

Você pode baixar este arquivo dos seguintes locais:

Google CDN, por exemplo, //ajax.googleapis.com/ajax/libs/angularjs/XYZ/angular-route.js Bower, por exemplo, bower, instalar angular-route @ XYZ code.angularjs.org, por exemplo, “//code.angularjs.org/XYZ/ angular-route.js “onde XYZ é a versão do AngularJS que você está executando.

Em seguida, carregue o módulo em seu aplicativo, adicionando-o como um módulo dependente:

angular.module (‘app’, [‘ngRoute’]); Com isso, você está pronto para começar!

John Papa forneceu meu problema sobre este comentário obscuro: Às vezes, quando você recebe esse erro, significa que está faltando um arquivo. Outras vezes, significa que o módulo foi definido depois de ser usado. Uma maneira de resolver isso facilmente é nomear os arquivos de módulo * .module.js e carregá-los primeiro.

Meu problema estava no config.xml. Mudando:

  

para

  

consertou.

É um erro do injetor. Você pode ter usado muitos arquivos JavaScript para que o injetor possa estar faltando.

Alguns estão aqui:

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

Por favor, verifique o injetor que você precisa inserir no seu app.js

Às vezes eu vi esse erro quando você está alternando entre os projetos e executando os projetos na mesma porta, um após o outro. Nesse caso, vá para Chrome Developer Tools> Network e tente verificar o arquivo js real para: if the file match with the workspce . Para resolver isso, selecione Disable Cache na rede.

Depois de muitos meses, voltei a desenvolver um aplicativo AngularJS ( 1.6.4 ), para o qual escolhi o Chrome (PC) e o Safari (MAC) para testes durante o desenvolvimento. Este código apresentou este erro: $ injector: modulerr Module Error no IE 11.0.9600 (Windows 7, 32-bit).

Após a investigação, ficou claro que o erro era devido ao loop forEach sendo usado, apenas substituiu todos os loops forEach com loops normais para que as coisas funcionassem como estão …

Era basicamente uma questão do IE11 (respondida aqui ) em vez de um problema do AngularJS, mas quero colocar esta resposta aqui porque a exceção levantada era uma exceção do AngularJS. Espero que isso ajude alguns de nós lá fora.