Açısal JS 1.2 $ enjektör: modulerr


445

1.07 yerine açısal 1.2 kullanılırken aşağıdaki kod parçası artık geçerli değil, neden?

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

sorun enjektör yapılandırma bölümünde (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) 

Doğru hatırlıyorsam bu sorun açısal 1.1.6 ile başladı.

Yanıtlar:


636

Sorun, ngRoute modülünün eksik dahil edilmesinden kaynaklanmıştır. 1.1.6 sürümünden bu yana ayrı bir bölümdür:

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

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

492
Hangi modülün eksik olduğundan emin değilseniz, okunabilir bir hata mesajı veren küçültülmemiş angular.js'yi kullanın:"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."
Mart

2
Hmm, bower kullanıyorum ve .map dosyaları sağlıyor - Chrome'un neden hala küçültülmüş dosyadan hatalar gösterdiğini merak ediyorum. Uyarı için teşekkürler, @Mart!
Aditya MP

5
@ arg20, cevabı burada bulacaksınız: github.com/angular/angular.js/commit/…
Laurent

4
Kutsal inek Ben her yerde bunun için bir çözüm arıyordum. 1.0'dan 1.2'ye yükselttim ve bu hatayı aldım. Bulabildiğim tek tavsiye, açısal route.js'nin dahil edildiğinden emin olmaktır .... Angular belgelerinin hayranı değil. Neyse teşekkür ederim! Ben oy verdim.
RachelD

4
Modülünüzü tanımlarken angular.module ('myModule', []) yerine angular.module ('myModule') kullanırsanız bu hatayı alabilirsiniz. stackoverflow.com/questions/16260538/…
Anirudhan J

42

sonunda bu '()' eklenerek hatam kayboldu

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

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

40

Listeye eklenecek bir şey daha var, çünkü bu 'Hata: [$ injector: modulerr] angular' adlı google aramasıyla ortaya çıkan ilk sonuç:

'İndex'html' öğenizdeki uygulama adınızla ana javascript uygulama tanımınız arasında bir uyumsuzluk varsa, bu da bu hatayı oluşturabilir.

Örneğin, HTML'niz şöyle görünürse:

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

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

        etc ...

Ve JavaScript'iniz şöyle görünür (yani uygulama adında bir yazım hatası vardır - myWebSite yerine myWebCite):

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

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

ardından 'Hata: [$ injector: modulerr] açısal' hatası da oluşturulur.


Buna çok yakındım. Ben ng-app = "app" ayarlamıştı ... ve sonra asla bir modül kurmak. Yani hatayı açıyordu. Bir acemi olarak, sadece benim örnek kod çalışma almak için = "app" parçası kaldırıldı. Daha sonra, kurulum uygun modül ve yönlendirme ... :)
Eric burdo

25

Noob hatası js modülünü eklemeyi unutuyor olabilir

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

index.html'deki dosyalar hiç


24
Hata ayıklama / hata mesajları açısal ne kadar kötü şaşırtıcı.
K - SO'da toksisite artıyor.

3
LOL. Kendi kendime dedim ki, hayır, bu basit hatayı yapamam. Ve cevabınızı birçok kez geçtim. Ama sorunumu çözdü.
Maubeh

Bazı ithalat eksik hakkında
famas23

13

Dosyaları sıkıştıran, paketleyen ve küçülten çerçeveler kullananlarda, her bir bağımlılığı açıkça tanımladığınızdan emin olun, çünkü bu çerçeveler değişkenlerinizi yeniden adlandırma eğilimindedir. ASP.NET kullanırken BundleConfig.csuygulama komut dosyalarımı bir araya getirmek için bu bana oldu .

Önce

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

Sonra

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

Açısal Bağımlılık Açıklaması hakkında daha fazla bilgiyi buradan edinebilirsiniz.


12

Konsolda bu hata ([$injector:nomod], MINERR_ASSET:22)varsa, yüklemeden önce uygulama kodunuzu eklemediğinizden emin olunAngularJS

Bunu yapıyordum ve siparişi düzelttikten sonra hata ortadan kalktı.


9

Ben sadece aynı hatayı yaşadım, benim durumumda angular.moduleeksik ikinci parametre neden oldu - umarım bu aynı sorunu olan birine yardımcı olabilir.

angular.module('MyApp');

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


1
Bu benim sorunumdu; Angular.module ('my.Namespace', []) bildirimini kaçırıyordum ; angular.module ('my.Namespace')
ScottFoster1000

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

Belirli bağımlılıkları kullanırken src eklemeniz gerektiğini unutma!
K - SO'da toksisite artıyor.

6

Aynı sorunu yaşadım ve olası tüm çözümü denedim. Ama sonunda ngRoutemodülün artık ayrıldığını belgelemeden öğrendim . Bu bağlantıya bir göz atın

Çözüm: cdn ekle açısal-route.js sonra angular.min.js senaryo

<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

Bu hata için başka bir tetikleyici "." "aksi takdirde" veya rota tanımınızdaki başka bir rotadan önce:

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

Yine tam bir durak tarafından ipotek edildi. JS sevmeliyim!


4

Aşağıdaki yanıtın yanı sıra, konsolda ( [$injector:nomod], MINERR_ASSET:22) bu hatayı varsa , ancak her şey iyi çalışıyor gibi görünüyorsa , index.html dosyasında yinelenen ekler olmadığından emin olun .

Çünkü bu modül, bu modülü kullanan ve gerçek modül bildirimine sahip dosyadan önce eklenmiş dosyalardan yinelenen içeriğe sahipseniz de bu hata ortaya çıkabilir.


3

Angularjs'in resmi eğitiminden geçerseniz https://docs.angularjs.org/tutorial/step_07

Not: AngularJS sürüm 1.2 ile başlayarak, ngRoute kendi modülündedir ve yukarıdaki Bower üzerinden indirdiğimiz ek angular-route.js dosyası yüklenerek yüklenmelidir.

Ayrıca lütfen ngRoute api https://docs.angularjs.org/api/ngRoute adresinden not edin

Kurulum Öncelikle HTML'nize angular-route.js dosyasını ekleyin:

Bu dosyayı aşağıdaki yerlerden indirebilirsiniz:

Google CDN örn. //Ajax.googleapis.com/ajax/libs/angularjs/XYZ/angular-route.js Bower örneğin bower install açısal yol @ XYZ code.angularjs.org örn. "//Code.angularjs.org/XYZ/ angular-route.js "; burada XYZ, çalıştırdığınız AngularJS sürümüdür.

Ardından, modülü bağımlı bir modül olarak ekleyerek uygulamanıza yükleyin:

angular.module ('app', ['ngRoute']); Bununla başlamaya hazırsınız!


2

John Papa, bu oldukça belirsiz yorumla ilgili sorunumu sağladı : Bazen bu hatayı aldığınızda, bir dosyayı kaçırdığınız anlamına gelir. Diğer zamanlarda ise modül kullanıldıktan sonra tanımlanmış demektir. Bunu kolayca çözmenin bir yolu modül dosyalarını * .module.js olarak adlandırmak ve önce bunları yüklemektir.


0

Sorunum config.xml dosyasındaydı. Değiştirme:

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

için

<access origin="*"/>

onu düzeltti.


0

Bu bir enjektör hatası. Enjektör eksik olabilmesi için birçok JavaScript dosyası kullanmış olabilirsiniz.

Bazıları burada:

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

Lütfen takmanız gereken enjektörü kontrol edin. app.js


0

Bazen bu hatayı, projeler arasında geçiş yaparken ve projeleri birbiri ardına aynı bağlantı noktasında yürütürken gördüm. Bu durumda git krom Geliştirici Araçlar> Ağ gerçek js yazılı dosyayı kontrol etmek denemek ve: if the file match with the workspce. Bu sorunu çözmek için Disable Cacheağ altından seçin .


0

Birkaç ay sonra, geliştirme sırasında test etmek için Chrome (PC) ve Safari (MAC) seçtiğim bir AngularJS ( 1.6.4 ) uygulaması geliştirmeye geri döndüm . Bu kod sunulan Hata: $ enjektör: modulerr Modül hatası üzerinde IE 11.0.9600 (Windows 7, 32 bit).

Soruşturma üzerine, hatanın forEach döngüsünün kullanılmasından kaynaklandığı anlaşıldı , sadece tüm forEach döngülerini şeylerin olduğu gibi çalışması için döngüler için normal ile değiştirdi ...

Temelde bir AngularJS sorunu ( burada cevaplandı ) bir IE11 sorunu oldu , ama ben bu cevabı buraya koymak istiyorum çünkü istisna bir AngularJS istisnası koymak istiyorum. Umarım orada bazılarımıza yardımcı olur.

benzer şekilde. lambda işlevlerini kullanma ... sadece () => {...} ile iyi ol 'işlevini () {...} değiştirin


0

Bu sorun vardı ve benim kod satır satır kontrol ettikten sonra bunu gördüm

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

yeni değiştirdim

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

ve işe yaradı. etiketlerinizi kontrol edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.