AngularJS 1.2 $ इंजेक्टर: मॉडुलर


445

1.07 के बजाय कोणीय 1.2 का उपयोग करते समय निम्नलिखित कोड कोड मान्य नहीं है, क्यों?

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

समस्या इंजेक्टर कॉन्फ़िगरेशन भाग (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) 

अगर मुझे सही से याद है तो यह मुद्दा कोणीय 1.1.6 से शुरू हुआ।

जवाबों:


636

समस्या नेकाउंटर मॉड्यूल के लापता होने के कारण हुई थी। संस्करण 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']);

492
यदि आप सुनिश्चित नहीं हैं कि कौन सा मॉड्यूल गायब है, तो ना की गई कोणीय का उपयोग करें। जो एक पठनीय त्रुटि संदेश देता है:"Error: [$injector:nomod] Module 'ngRoute' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument."
मार्ट

2
हम्म, मैं बोवर का उपयोग कर रहा हूं, और यह .map फाइलें प्रदान करता है - मुझे आश्चर्य है कि क्यों क्रोम अभी भी मुझे मिनीफाइड फाइल से त्रुटियां दिखा रहा था। सिर के लिए धन्यवाद, @ कार्ट!
आदित्य सांसद

5
@ arg20, आपको यहाँ उत्तर मिलेगा: github.com/angular/angular.js/commit/…
Laurent

4
पवित्र गाय मैं इस के समाधान के लिए हर जगह देख रहा हूं। मैंने 1.0 से 1.2 तक अपग्रेड किया और मुझे यह त्रुटि मिली। एकमात्र सलाह जो मुझे मिल सकती है, यह सुनिश्चित करना है कि कोणीय-मार्ग। जेएस को शामिल किया गया था, जो कि यह नहीं था .... कोणीय गुटों का प्रशंसक नहीं था। आपका धन्यावाद! मैंने मतदान किया।
राहेल

4
यदि आप अपने मॉड्यूल को परिभाषित करते हुए कोणीय.module ('myModule', []] के बजाय angular.module ('myModule') का उपयोग करते हैं तो आपको यह त्रुटि मिल सकती है। stackoverflow.com/questions/16260538/…
अनिरुद्धन J

42

इस अंत () को जोड़कर मेरी त्रुटि गायब हो गई

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

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

40

सूची में जोड़ने के लिए एक और बात यह है कि यह पहला परिणाम है जो 'त्रुटि: [$ इंजेक्टर: मॉड्यूलर] कोणीय' की एक Google खोज के साथ आता है:

यदि आपके ऐप के नाम के बीच आपके 'index'html' और आपके मुख्य जावास्क्रिप्ट ऐप की परिभाषा में कोई बेमेल है, तो यह त्रुटि भी उत्पन्न कर सकता है।

उदाहरण के लिए यदि आपका HTML इस तरह दिखता है:

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

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

        etc ...

और आपका जावास्क्रिप्ट इस तरह दिखता है (यानी ऐप नाम पर एक टाइपो है - myWebCite के बजाय myWebSite):

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

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

फिर 'त्रुटि: [$ इंजेक्टर: मॉड्यूलर] कोणीय' त्रुटि भी उत्पन्न होगी।


मैं इसके बहुत करीब था। मैंने एनजी-ऐप = "ऐप" सेट किया था ... और फिर कभी भी मॉड्यूल सेटअप नहीं किया। तो यह त्रुटि को तीन गुना कर रहा था। एक शुरुआत के रूप में, मैंने सिर्फ अपना नमूना कोड काम करने के लिए = "ऐप" टुकड़ा हटा दिया। बाद में, मैंने उचित मॉड्यूल सेटअप किया और रूटिंग ... :)
एरिक बर्डो

25

मॉड्यूल js को शामिल करने के लिए एक noob त्रुटि को भुला दिया जा सकता है

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

index.html में फाइलें बिल्कुल


24
कमाल कितना बुरा / त्रुटि संदेश कोणीय में हैं।
के - एसओ में विषाक्तता बढ़ रही है।

3
जबरदस्त हंसी। मैंने अपने आप से कहा, नहीं, मैं यह सरल त्रुटि नहीं कर सकता। और मैंने आपका उत्तर कई बार दिया। लेकिन इससे मेरी समस्या हल हो गई।
Maubeh

यह कुछ आयात गायब होने के बारे में है
famas23

13

फ़ाइलों को संपीड़ित, बंडल और छोटा करने वाले फ़्रेमवर्क का उपयोग करने वालों के लिए, सुनिश्चित करें कि आप प्रत्येक निर्भरता को स्पष्ट रूप से परिभाषित करते हैं क्योंकि ये फ्रेमवर्क आपके चर का नाम बदल देते हैं। ASP.NET BundleConfig.csका उपयोग करते समय मेरे साथ ऐसा हुआ कि मेरी ऐप स्क्रिप्ट को एक साथ बंडल किया गया।

इससे पहले

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

उपरांत

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

कोणीय निर्भरता एनोटेशन के बारे में यहाँ और पढ़ें


12

यदि आपके पास कंसोल में यह त्रुटि है ([$injector:nomod], MINERR_ASSET:22), तो सुनिश्चित करें कि आप लोड करने से पहले अपने एप्लिकेशन कोड को शामिल नहीं कर रहे हैंAngularJS

मैं ऐसा कर रहा था और एक बार मैंने आदेश तय कर दिया, त्रुटि दूर हो गई।


9

मुझे सिर्फ एक ही त्रुटि का अनुभव हुआ है, मेरे मामले में यह दूसरे पैरामीटर के angular.moduleलापता होने के कारण हुआ था- उम्मीद है कि इससे किसी को एक ही समस्या में मदद मिल सकती है।

angular.module('MyApp');

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


1
यह मेरा मुद्दा था; मुझे कोणीय स्वरोदय ('my.Namespace', []) की घोषणा याद आ रही थी ; उपयोग करने से पहले । angular.module ( 'my.Namespace') निर्देश ( 'myDirective', [...
ScottFoster1000


6

मेरे पास एक ही समस्या थी और हर संभव समाधान की कोशिश की। लेकिन आखिरकार मुझे प्रलेखन से पता चला कि ngRouteमॉड्यूल अब अलग हो गया है। इस लिंक पर एक नजर

समाधान: cdn जोड़े कोणीय route.js के बाद angular.min.js स्क्रिप्ट

<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>

5

इस त्रुटि के लिए एक और ट्रिगर "छोड़ रहा है।" अपने "अन्यथा" या आपके मार्ग की परिभाषा के किसी अन्य मार्ग से पहले:

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

एक पूर्ण विराम द्वारा, अभी तक फिर से बंधक। होगा प्यार जेएस!


4

नीचे उत्तर के अलावा, यदि आपके पास कंसोल ( [$injector:nomod], MINERR_ASSET:22) में यह त्रुटि है , लेकिन सब कुछ ठीक काम करने लगता है, तो सुनिश्चित करें कि आपके पास डुप्लिकेट नहीं है आपके index.html में शामिल है।

क्योंकि यह त्रुटि तब भी खड़ी हो सकती है जब आपके पास डुप्लिकेट फ़ाइलें शामिल हैं, जो इस मॉड्यूल का उपयोग करती हैं, और वास्तविक मॉड्यूल घोषणा के साथ फाइल से पहले शामिल हैं।


3

अगर आप angularjs के आधिकारिक ट्यूटोरियल https://docs.angularjs.org/tutorial/step_07 से गुज़रते हैं

नोट: AngularJS संस्करण 1.2 के साथ शुरू करना, ngRoute अपने स्वयं के मॉड्यूल में है और इसे अतिरिक्त कोणीय-मार्ग .js फ़ाइल लोड करके लोड किया जाना चाहिए, जिसे हम ऊपर Bower के माध्यम से डाउनलोड करते हैं।

कृपया ngRoute api https://docs.angularjs.org/api/ngRoute से भी ध्यान दें

स्थापना पहले अपने HTML में कोणीय- path.js शामिल करें:

आप इस फ़ाइल को निम्न स्थानों से डाउनलोड कर सकते हैं:

Google CDN उदा। //Ajax.googleapis.com/ajax/libs/angularjs/XYZ/angular-route.js Bower उदा। Bower स्थापित करें कोणीय-मार्ग @ XYZ code.angerjs.org उदा "//code.angularjs.org/XYZ/ कोणीय- path.js "जहाँ XYZ आप पर चलने वाले AngularJS संस्करण है।

फिर इसे अपने मॉड्यूल में एक निर्भर मॉड्यूल के रूप में जोड़कर लोड करें:

angular.module ('ऐप', ['ngRoute']); इसके साथ ही आप आरंभ करने के लिए तैयार हैं!


2

जॉन पापा ने इस मुद्दे पर मेरी टिप्पणी के बजाय अस्पष्ट टिप्पणी प्रदान की: कभी-कभी जब आपको वह त्रुटि मिलती है, तो इसका मतलब है कि आप एक फ़ाइल याद कर रहे हैं। अन्य बार इसका मतलब है कि मॉड्यूल का उपयोग करने के बाद परिभाषित किया गया था। इसे आसानी से हल करने का एक तरीका मॉड्यूल फ़ाइलों का नाम * .module.js है और उन को पहले लोड करना है।



0

यह एक इंजेक्टर त्रुटि है। आपके पास बहुत सारी जावास्क्रिप्ट फ़ाइलों का उपयोग हो सकता है ताकि इंजेक्टर गायब हो।

कुछ यहाँ हैं:

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

कृपया इंजेक्टर की जाँच करें जिसे आपको अपने में सम्मिलित करना है app.js


0

कुछ समय बाद मैंने यह त्रुटि देखी है जब आप परियोजनाओं के बीच स्विच कर रहे हैं और एक के बाद एक उसी पोर्ट पर प्रोजेक्ट चला रहे हैं। उस मामले गोटो Chrome डेवलपर टूल में> नेटवर्क और के लिए वास्तविक लिखा js फ़ाइल की जाँच करने के लिए प्रयास करें: if the file match with the workspce। इसे हल करने के लिए Disable Cacheनेटवर्क के तहत चयन करें ।


0

कई महीनों के बाद, मैं एक AngularJS ( 1.6.4 ) ऐप विकसित करने के लिए लौट आया , जिसके लिए मैंने विकास के दौरान परीक्षण के लिए क्रोम (पीसी) और सफारी (मैक) को चुना। इस कोड ने यह त्रुटि प्रस्तुत की : $ इंजेक्टर: IE 11.0.9600 पर मॉड्यूल मॉड्यूल त्रुटि (विंडोज 7, 32-बिट)।

जांच करने पर, यह स्पष्ट हो गया कि त्रुटि के कारण forEach लूप का उपयोग किया जा रहा था, बस सभी forEach छोरों को सामान्‍य के साथ छोरों के रूप में काम करने के लिए बदल दिया गया है ...

यह मूलतः AngularJS समस्या के बजाय IE11 मुद्दा ( यहाँ उत्तर दिया गया ) था, लेकिन मैं इस उत्तर को यहाँ रखना चाहता हूँ क्योंकि उठाया गया अपवाद एक AngularJS अपवाद था। आशा है कि यह हममें से कुछ को वहाँ से बाहर निकालने में मदद करेगा।

इसी तरह। अच्छे कार्यों के साथ lambda फ़ंक्शन का उपयोग न करें ... बस बदलें () => {...}


0

मुझे यह समस्या थी और लाइन कोड द्वारा मेरे कोड की जाँच के बाद मैंने यह देखा

 <textarea class="form-control" type="text" ng-model="WallDesc" placeholder="Enter Your Description"/>

मैंने अभी इसे बदल दिया है

     <textarea class="form-control" type="text" ng-model="WallDesc" placeholder="Enter Your Description"></textarea>

और यह काम किया है। इसलिए अपने टैग की जाँच करें।

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