Angularjs: Erro: O argumento ‘HomeController’ não é uma function, foi indefinido

Esta é minha demonstração usando angularjs, para criar um arquivo de serviço e adicionar serviço a um controlador.

Eu tenho dois problemas com a minha demonstração:

  • Uma é quando eu coloco antes de eu recebo este erro,

Erro: [ng: areq] Argumento ‘HomeController’ não é uma function, foi indefinido

  • A outra é quando eu coloco antes de receber o seguinte erro,

Erro: [$ injector: unpr] Fornecedor desconhecido: MyServiceProvider <- MyService

Minha fonte:

Arquivo Index.html :

   …  … 
{{item.id + item.name}}

Arquivo HomeController.js :

 (function(angular){ 'use strict'; var myApp = angular.module('myApp',[]); myApp.controller('HomeController',function($scope,MyService){ $scope.hello=[]; $scope.hello = MyService.getHello(); }); })(window.angular); 

Arquivo MyService.js :

 (function(angular){ 'use strict'; var myApp = angular.module('myApp',[]); myApp.service('MyService', function () { var hello =[ {id:1,name:'cuong'}, {id:2,name:'nguyen'}]; this.getHello = function(){ return hello; }; }); })(window.angular); 

Isso cria um novo módulo / aplicativo:

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

Enquanto isso acessa um módulo já criado ( observe a omissão do segundo argumento ):

 var myApp = angular.module('myApp'); 

Como você usa a primeira abordagem em ambos os scripts, basicamente você está substituindo o módulo criado anteriormente.

No segundo script que está sendo carregado, use var myApp = angular.module('myApp'); .

Eu experimentei esse erro uma vez. Meu problema é que eu não estava adicionando o arquivo FILE_NAME_WHERE_IS_MY_FUNCTION.js

então meu arquivo.html nunca encontrou onde minha function estava

Depois de adicionar o “file.js”, resolvi o problema

   .... .... ....    

Além disso, certifique-se de que seus controladores estejam definidos nas tags de script na parte inferior de seu index.html, pouco antes da tag de fechamento do corpo.

         

desde que tudo esteja escrito “corretamente” (o mesmo) nas suas páginas specific.html, specific.js e app.js, isso deve resolver o problema.

Aconteceu comigo algumas vezes sempre que eu sinto falta “,” entre lista de injeções e function

 app.controller('commonCtrl', ['$scope', '$filter',function($scope,$filter) { }]); 

Eu também experimentei esse erro, mas no meu caso foi por causa da convenção de nomenclatura do controlador. Eu declarei controller: "QuestionController" em .state mas na definição do controller eu declarei como

 yiiExamApp.controller('questionController' ... 

mas deve ser

 yiiExamApp.controller('QuestionController' ... 

Espero que ajude as pessoas a enfrentar este erro por causa deste erro estúpido que eu perdi 4 horas na identificação dele.

Eu também encontrei este mesmo erro e a correção para mim foi include meu módulo filho na matriz do módulo principal.

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

Se ALL ELSE falhar e você correr localmente na pilha MEAN como eu com gulp … pare e sirva novamente! Eu estava puxando o meu ouvido meticulosamente verificando tudo de todos os seus posts sem sucesso, até que eu simplesmente corri o serviço gulp.

Eu tenho o mesmo erro. Eu defini o script java assim

  

então eu mudei para o presente

  

Depois disso, meu problema está resolvido.

Eu também encontrei esse problema no meu projeto. Ele eventualmente funcionou depois que eu inseri o my-controller.js no meu arquivo karma.conf.js , com a tag .

Espero que isso ajude. Existem muitas razões que podem levar a esse problema.

Eu também tenho esse erro.

Eu tive que adicionar meu novo controlador às informações de roteamento. \ src \ js \ app.js

 angular.module('Lillan', [ 'ngRoute', 'mobile-angular-ui', 'Lillan.controllers.Main' ]) 

Eu adicionei meu controle para fazer parecer

 angular.module('Lillan', [ 'ngRoute', 'mobile-angular-ui', 'Lillan.controllers.Main', 'Lillan.controllers.Growth' ]) 

Felicidades!

Obviamente, os posts anteriores são úteis, mas qualquer um dos itens acima não é útil no meu caso. O motivo estava na sequência errada de carregar scripts . Por exemplo, no meu caso, o controlador editCtrl.js depende de (usa) ui-bootstrap-tpls.js, portanto, ele deve ser carregado primeiro. Isso causou um erro:

   

Isso está certo, funciona:

   

Portanto, para corrigir o erro, primeiro é necessário declarar todos os scripts sem dependencies e, em seguida, os scripts que dependem da declaração anterior.

Tente isso

  My First Angular App    

Adding Simple Controller

Name:
{{name}}
  • {{cust.name}} - {{cust.city}}

No meu caso, estava faltando o nome do aplicativo Angular no arquivo html. Por exemplo, eu incluí esse arquivo para iniciar o código do meu aplicativo. Eu tinha assumido que estava sendo executado, mas não foi.

app.module.js

 (function () { 'use strict'; angular .module('app', [ // Other dependencies here... ]) ; })(); 

No entanto, quando eu declarei o aplicativo no html eu tive isso:

index.html

  

Mas para referenciar o aplicativo Angular pelo nome que usei, tive que usar:

index.html (fixo)

  

Eu estava recebendo o erro porque eu tinha adicionado o script do controlador antes do script onde eu tinha definido o módulo correspondente no aplicativo. Primeiro adicione o script

  

Então só adicione

  

No arquivo principal.

Erro: ng: areq Bad Argument me pegou algumas vezes porque eu fecho o colchete muito cedo. No exemplo BAD abaixo, ele é fechado incorretamente após ‘$ state’ quando deveria realmente ir antes do pai final.

MAU:

 sampleApp.controller('sampleApp', ['$scope', '$state'], function($scope, $state){ }); 

BOA:

 sampleApp.controller('sampleApp', ['$scope', '$state', function($scope, $state){ }]); 

Eu tive problema semelhante. A correção foi garantir que seus ctrollers não sejam definidos apenas nas tags de script na parte inferior do seu index.html antes da tag de fechamento do corpo, mas TAMBÉM confiram que estão na ordem de como sua pasta está estruturada.

       

Sim. Como muitos já apontaram anteriormente, adicionei o caminho src a todos os arquivos do controlador no index.html.

      

Eu tive o mesmo problema, mas esqueci de include o arquivo no processo de minimização de grunhido / gulp.

 grunt.initConfig({ uglify: { my_target: { files: { 'dest/output.min.js': ['src/input1.js', 'src/missing_controller.js'] } } } }); 

Espero que ajude.

Na minha situação, este erro apareceu quando eu não declarei a function dentro de um argumento de matriz.

Aquele com erro :

 taskAppControllers.controller('MainMenuCtrl', []); 

O fixo:

 taskAppControllers.controller('MainMenuCtrl', [function(){ }]); 

Além disso, verifique se há erros de ortografia .

 var MyApp = angular.module('AppName',[]); MyApp.controller('WRONG_SPELLING_MyCtrl', ['$scope', MyControllerCtrl]) function MyControllerCtrl($scope) { var vm = $scope; vm.Apple = 'Android'; } 
{{Apple}}

Verifique se sua página HTML inclui:

  1. script angular.min
  2. app.js
  3. página JavaScript do controlador

A ordem em que os arquivos estão incluídos é importante. Foi a minha solução para este problema.

Espero que isto ajude.

 sampleApp.controller('sampleApp', ['$scope', '$state', function($scope, $state){ 

Mesma coisa para mim, vírgula ‘,’ antes de function me ajudou na correção do problema – Erro: ng: areq Bad Argument

Meu arquivo de controlador foi armazenado em cache como vazio. Limpar o cache consertou isso para mim.