AngularJS 1.2 $инжектор: modulerr

При использовании angular 1.2 вместо 1.07 следующий фрагмент кода больше недействителен, почему?

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

Если я правильно помню, эта проблема началась с angular 1.1.6.

Ответ 1

Проблема была вызвана отсутствием включения модуля ngRoute. Начиная с версии 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']);

Ответ 2

моя ошибка исчезла, добавив это '()' в конец

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

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

Ответ 3

Еще одна вещь, которую нужно добавить в список, поскольку это первый результат, который включает поиск Google: "Ошибка: [$ injector: modulerr] angular":

Если у вас есть несоответствие между вашим именем приложения в вашем "index'html" и в вашем основном определении приложения javascript, это также может вызвать эту ошибку.

Например, если ваш HTML выглядит так:

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

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

        etc ...

И ваш JavaScript выглядит так (у меня есть опечатка на имени приложения - myWebCite вместо myWebSite):

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

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

тогда также генерируется ошибка "Ошибка: [$ инжектор: modulerr] angular".

Ответ 4

Ошибка noob может забыть включить модуль js

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

в файле index.html вообще

Ответ 5

Если у вас есть эта ошибка в консоли ([$injector:nomod], MINERR_ASSET:22), убедитесь, что вы не включаете код приложения перед загрузкой AngularJS

Я делал это, и как только я исправил порядок, ошибка исчезла.

Ответ 6

Для тех, кто использует фреймворки, которые сжимают, связывают и минимизируют файлы, убедитесь, что вы явно определяете каждую зависимость, поскольку эти структуры, как правило, переименовывают ваши переменные. Это случилось со мной при использовании 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: '/'
      });
}]);

Подробнее здесь о Angular Аннотации зависимостей.

Ответ 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' ]); 

Ответ 8

Я только что испытал ту же ошибку, в моем случае это было вызвано отсутствием второго параметра в angular.module - надеюсь, это может помочь кому-то с той же проблемой.

angular.module('MyApp');

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

Ответ 9

У меня была такая же проблема, и я попытался все возможные решения. Но, наконец, я узнал из документации, что модуль ngRoute теперь разделен. Посмотрите на ссылка

Решение: Добавьте cdn angular -route.js после angular.min.js script

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

Ответ 10

Помимо ответа ниже, если у вас есть эта ошибка в консоли ([$injector:nomod], MINERR_ASSET:22), но все работает нормально, убедитесь, что в нет дубликата в вашем index.html.

Поскольку эта ошибка также может быть поднята, если у вас есть дубликат, включающий файлы, которые используют этот модуль, и включаются перед файлом с фактическим объявлением модуля.

Ответ 11

Другим триггером для этой ошибки является ".". перед вашим "другим" или любым другим маршрутом в определении маршрута:

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

Раздраженный полной остановкой, опять же. Должен любить JS!

Ответ 12

Если вы просмотрите официальный урок angularjs https://docs.angularjs.org/tutorial/step_07

Примечание. Начиная с версии AngularJS 1.2, ngRoute находится в собственном модуль и должен быть загружен путем загрузки дополнительного angular -route.js файл, который мы загружаем через Bower выше.

Также обратите внимание на ngRoute api https://docs.angularjs.org/api/ngRoute

Установка Сначала включите angular -route.js в свой HTML:

Вы можете загрузите этот файл из следующих мест:

Google CDN, например. //ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/ angular-route.js Bower например bower install angular [email protected] code.angularjs.org, например. "//code.angularjs.org/X.Y.Z/angular-route.js", где X.Y.Z - это Вы используете версию AngularJS.

Затем загрузите модуль в приложение, добавив его в качестве зависимого модуль:

angular.module('app', ['ngRoute']); С этим вы готовы началось!

Ответ 13

Джон Папа предоставил мою проблему на этот довольно неясный комментарий: иногда, когда вы получаете эту ошибку, это означает, что вам не хватает файла. В других случаях это означает, что модуль был определен после его использования. Один из способов решения этой проблемы - назвать файлы модулей *.module.js и загрузить их первым.

Ответ 14

Моя проблема была в файле config.xml. Изменение:

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

к

<access origin="*"/>

зафиксировал его.

Ответ 15

Его ошибка инжектора. Возможно, вы использовали большое количество файлов JavaScript, поэтому инжектор может отсутствовать.

Некоторые из них:

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