Angularjs: त्रुटि: [ng: areq] तर्क 'होमकंट्रोलर' एक कार्य नहीं है, अपरिभाषित है


109

सेवा फ़ाइल बनाने, और सेवा को एक नियंत्रक में जोड़ने के लिए यह कोणीय का उपयोग करते हुए मेरा डेमो है।

मुझे अपने डेमो में दो समस्याएं हैं:

  • एक है जब मैं इस त्रुटि को पाने <script src="HomeController.js">से पहले <script src="MyService.js">,

त्रुटि: [ng: areq] तर्क 'होमकंट्रोलर' एक फ़ंक्शन नहीं है, अपरिभाषित हो गया

  • अन्य है जब मैं डाल <script src="MyService.js">से पहले <script src="HomeController.js">मैं निम्नलिखित त्रुटि मिलती है,

त्रुटि: [$ इंजेक्टर: अनप्र] अज्ञात प्रदाता: MyServiceProvider <- MyService

मेरा स्रोत:

फ़ाइल Index.html:

<!DOCTYPE html>
<html >
    <head lang="en">…</head>
    <body ng-app="myApp">
        
        <div ng-controller="HomeController">
            <div ng-repeat="item in hello">{{item.id + item.name}}</div>
        </div>

        <script src="Scripts/angular.js"></script>
        <script src="Scripts/angular-route.js"></script>

        <!-- App libs -->
        <script src="app/app.js"></script>    
        <script src="app/services/MyService.js"></script>
        <script src="app/controllers/HomeController.js"></script>
    </body>
</html>

फ़ाइल 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);

फ़ाइल 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);

1
पुष्टि करें कि क्या आपने अपना * .controller.js बंडल बंडल में जोड़ा है। फ़ाइल में। यह मेरा ठीक करता है।
सैयद मोहम्मद

जवाबों:


210

यह एक नया मॉड्यूल / ऐप बनाता है:

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

हालांकि यह पहले से ही बनाए गए मॉड्यूल तक पहुँच जाता है ( दूसरे तर्क की चूक पर ध्यान दें ):

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

चूंकि आप दोनों लिपियों पर पहले दृष्टिकोण का उपयोग करते हैं, इसलिए आप मूल रूप से आपके द्वारा बनाए गए मॉड्यूल को ओवरराइड कर रहे हैं।

दूसरी स्क्रिप्ट लोड होने पर, उपयोग करें var myApp = angular.module('myApp');


इससे मेरी त्रुटि भी ठीक हो गई। मैंने गलती से 2 अलग-अलग फ़ाइलों (app.js और path.js) में angular.module ('myApp', ['ui.router']) को छोड़ दिया। एक बार जब मैंने मार्गों से सरणी हटा दी। तो यह इकाई परीक्षण तय कर दिया।
एलन बोग

64

मैंने एक बार इस त्रुटि का अनुभव किया। मेरी समस्या यह थी कि मैं FILE_NAME_WHERE_IS_MY_FUNCTION.js नहीं जोड़ रहा था

इसलिए मेरा file.html कभी नहीं पाया कि मेरा कार्य कहाँ था

एक बार जब मैंने "file.js" जोड़ दिया तो मैंने समस्या का समाधान कर दिया

<html ng-app='myApp'>
    <body ng-controller='TextController'>
    ....
    ....
    ....
    <script src="../file.js"></script>
    </body>
</html>

1
बड़ी मदद की। योमन ने स्क्रिप्ट टैग को कोणीय जनरेटर के index.html के निचले हिस्से में नीचे की ओर टाका ... बहुत आसानी से छूट जाता है। इसके लिए धन्यवाद!
JaeGeeTee

उसी संभावना को दौड़ाया। अन्य नियंत्रकों के साथ मेरे अनुक्रमणिका पृष्ठ में संबंधित कंट्रोलर.जेएस फ़ाइल को जोड़ना था
आह्मेदनावाज़बट

21

यह भी सुनिश्चित करें कि शरीर के लिए बंद टैग से ठीक पहले आपके नियंत्रक स्क्रिप्ट टैग के भीतर आपके index.html के नीचे की ओर परिभाषित हैं।

 <!-- build:js({.tmp,app}) scripts/scripts.js -->
    <script src="scripts/app.js"></script>
    <script src="scripts/controllers/main.js"></script>
    <script src="scripts/controllers/Administration.js"></script>
    <script src="scripts/controllers/Leaderboard.js"></script>
    <script src="scripts/controllers/Login.js"></script>
    <script src="scripts/controllers/registration.js"></script>

बशर्ते सबकुछ आपके विशिष्ट.html, विशिष्ट .js और app.js पृष्ठों पर "सही" (समान) लिखा हुआ हो, इससे आपकी समस्या का समाधान हो जाना चाहिए।


10

जब भी याद आती है मुझे कुछ समय होता है "," इंजेक्शन और फ़ंक्शन की सूची के बीच

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

}]);

नियंत्रक नाम और इंजेक्शनों की सूची के बीच "," गायब होने पर मेरे साथ एक ही बात हुई, अर्थातapp.controller('commonCtrl' ['$scope', '$filter',function($scope,$filter) { }]);
बेनजी

5

मुझे भी इस त्रुटि का अनुभव हुआ लेकिन मेरे मामले में यह नियंत्रक नामकरण सम्मेलन के कारण था। मैंने घोषित controller: "QuestionController"किया .stateलेकिन नियंत्रक परिभाषा में मैंने इसे घोषित किया

yiiExamApp.controller('questionController' ...

लेकिन यह होना चाहिए

yiiExamApp.controller('QuestionController' ...

आशा है कि इस बेवकूफ गलती के कारण लोगों को इस त्रुटि का सामना करने में मदद मिलती है मैंने इसे पहचानने में 4hour बर्बाद किया।


5

मुझे भी यही त्रुटि मिली। मैंने जावा स्क्रिप्ट को इस तरह परिभाषित किया

<script src="controllers/home.js" />

फिर मैंने इसे बदल दिया

<script src="controllers/home.js"></script>

इसके बाद मेरी समस्या हल हो गई।


4

मुझे भी इसी त्रुटि का सामना करना पड़ा और मेरे लिए फिक्स अपने बच्चे को मुख्य मॉड्यूल सरणी में शामिल करना था।

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

4

यदि सभी ईएलएसई विफल हो जाते हैं और आपके स्थानीय रूप से मेरे जैसे स्टैक पर चल रहे हैं, तो बस फिर से रुकें और फिर से सेवा करें! मैं अपनी सुनवाई को सावधानीपूर्वक आपके सभी पदों से सब कुछ जांचने के लिए खींच रहा था, जब तक कि मैं केवल गोल-गोल सेवा नहीं करता।



2

मेरा भी ऐसा ही मुद्दा था। यह सुनिश्चित करना तय था कि आपके ctrollers को न केवल शरीर के लिए बंद टैग से पहले अपने index.html के नीचे की ओर स्क्रिप्ट टैग में परिभाषित किया गया है, बल्कि ALSO यह भी सत्यापित कर रहा है कि वे इस क्रम में हैं कि आपका फ़ोल्डर कैसे संरचित है।

<script src="scripts/app.js"></script>
<script src="scripts/controllers/main.js"></script>
<script src="scripts/controllers/Administration.js"></script>
<script src="scripts/controllers/Leaderboard.js"></script>
<script src="scripts/controllers/Login.js"></script>
<script src="scripts/controllers/registration.js"></script>

2

मुझे अपने प्रोजेक्ट में भी इस समस्या का सामना करना पड़ा। जब मैंने my-controller.jsअपनी karma.conf.jsफ़ाइल में सम्मिलित किया, तो आखिरकार यह काम कर गया<script>टैग के ।

आशा है कि यह मदद करेगा। ऐसे कई कारण हैं जो इस समस्या का कारण बन सकते हैं।


1

मुझे भी यह त्रुटि मिली।

राउटिंग जानकारी में मुझे अपना नया कंट्रोलर जोड़ना था। \ Src \ js \ app.js

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

मैंने अपने कंट्रोलर को इसमें शामिल करने के लिए जोड़ा

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

चीयर्स!


1

जाहिर है कि पिछली पोस्ट उपयोगी हैं, लेकिन उपरोक्त में से कोई भी मेरे मामले में सहायक नहीं है। कारण लोडिंग स्क्रिप्ट के गलत अनुक्रम में था । उदाहरण के लिए, मेरे मामले में, नियंत्रक editCtrl.js निर्भर करता है (उपयोग करता है) ui-bootstrap-tpls.js, इसलिए इसे पहले लोड किया जाना चाहिए। इससे त्रुटि हुई:

<script src="scripts/app/station/editCtrl.js"></script>
<script src="scripts/angular-ui/ui-bootstrap-tpls.js"></script>

यह सही है, काम करता है:

<script src="scripts/angular-ui/ui-bootstrap-tpls.js"></script>
<script src="scripts/app/station/editCtrl.js"></script>

इसलिए, त्रुटि को ठीक करने के लिए आपको पहले सभी स्क्रिप्ट पर निर्भरता के बिना घोषित करने की आवश्यकता है , और फिर ऐसी स्क्रिप्ट जो पहले घोषित पर निर्भर करती हैं।


1

इसे इस्तेमाल करे

    <title>My First Angular App</title>

</head>

<body>

     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>

    <h3>Adding Simple Controller<h3>        

    <div ng-controller="SimpleController">
        Name:

        <br/>

        <input type = "text" data-ng-model = "name"/> {{name}}

        <br/>

        <ul>    
            <li data-ng-repeat = "cust in customers | filter:name | orderBy:'city'">
                {{cust.name}} - {{cust.city}}
            </li>
        </ul>

    </div>


    <script>

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

        angularApp.controller('SimpleController', [ '$scope', SimpleController]);

        function SimpleController($scope)
        {

            $scope.customers = [
                                    {name:'Nikhil Mahirrao', city:'Pune'},
                                    {name:'Kapil Mahire', city:'Pune'},
                                    {name:'Narendra Mahirrao', city:'Phophare'},
                                    {name:'Mithun More', city:'Shahada'}

                                ]; 
        }

    </script>

</body>


1

मेरे मामले में, मुझे html फ़ाइल में कोणीय अनुप्रयोग का नाम याद नहीं आ रहा था। उदाहरण के लिए, मैंने इस फाइल को अपने एप्लिकेशन कोड की शुरुआत के लिए शामिल किया था। मैंने मान लिया था कि इसे चलाया जा रहा है, लेकिन यह नहीं था।

app.module.js

(function () {
    'use strict';

    angular
        .module('app', [
        // Other dependencies here...
        ])
    ;

})();

हालाँकि, जब मैंने html में एप की घोषणा की तो मेरे पास यह था:

index.html

<html lang="en" ng-app>

लेकिन मेरे द्वारा उपयोग किए गए नाम से कोणीय अनुप्रयोग को संदर्भित करने के लिए, मुझे उपयोग करना पड़ा:

index.html (फिक्स्ड)

<html lang="en" ng-app="app">

1

मुझे त्रुटि मिल रही थी क्योंकि मैंने उस स्क्रिप्ट से पहले नियंत्रक स्क्रिप्ट को जोड़ा था जहां मैंने ऐप में संबंधित मॉड्यूल को परिभाषित किया था। सबसे पहले स्क्रिप्ट जोड़ें

<script src = "(path of module.js file)"></script>

उसके बाद ही जोड़ें

<script src = "(path of controller.js file)"></script>

मुख्य फाइल में।


1

त्रुटि: ng: isq बुरा तर्क मुझे दो बार मिल चुका है क्योंकि मैं वर्ग कोष्ठक को भी जल्द ही बंद कर देता हूं। नीचे दिए गए BAD उदाहरण में '$ स्थिति' के बाद इसे गलत तरीके से बंद कर दिया जाता है, जब इसे वास्तव में अंतिम पेरेंट से पहले जाना चाहिए।

खराब:

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

});

अच्छा:

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

}]);

0

हाँ। जैसा कि कई पहले बता चुके हैं, मैंने index.html में सभी कंट्रोलर फाइलों में src पाथ जोड़ा है।

<script src="controllers/home.js"></script>
<script src="controllers/detail.js"></script>
<script src="controllers/login.js"></script>
<script src="controllers/navbar.js"></script>
<script src="controllers/signup.js"></script>

इससे वह त्रुटि ठीक हो गई।


0

मुझे भी यही समस्या थी, लेकिन मैं फ़ाइल को ग्रन्ट / गुलप मिनिमाइजेशन प्रोसेस में शामिल करना भूल गया।

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

उम्मीद है की वो मदद करदे।


0

मेरी स्थिति में यह त्रुटि तब दिखाई दी जब मैंने किसी सरणी तर्क के भीतर फ़ंक्शन की घोषणा नहीं की।

के साथ एक त्रुटि :

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

निश्चित एक:

taskAppControllers.controller('MainMenuCtrl', [function(){

}]);

0

वर्तनी की गलतियों की भी जाँच करें ।

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

<div ng-controller="ACTUAL_SPELLING_MyCtrl">
    {{Apple}}
</div>

0

जांचें कि क्या आपका HTML पृष्ठ शामिल है:

  1. angular.min लिपि
  2. app.js
  3. नियंत्रक जावास्क्रिप्ट पृष्ठ

फ़ाइलों को शामिल करने का क्रम महत्वपूर्ण है। यह मेरी समस्या का समाधान था।

उम्मीद है की यह मदद करेगा।


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

मेरे लिए एक ही बात, अल्पविराम ',' फंक्शन से पहले इस मुद्दे को ठीक करने में मेरी मदद की - त्रुटि: एनजी: अरीक बैड दलील


0

मेरी नियंत्रक फ़ाइल खाली के रूप में कैश की गई थी। कैशे क्लियर करना मेरे लिए तय है।


0

मैंने गलती से अपना HomeController.js स्थानांतरित कर दिया को सीधे चला दिया, जहां यह अपेक्षित था। इसे फिर से मूल स्थान पर लाना।

इसके बाद मेरी वेबसाइट ने हर सेकंड स्वचालित रूप से पृष्ठों को लोड करना शुरू कर दिया, मैं भी त्रुटि को देखने में असमर्थ था। इसलिए मैंने ब्राउज़र कैश को साफ़ किया। इसने समस्या को हल कर दिया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.