УгловойJS не загружается модуль - программирование
Подтвердить что ты не робот

УгловойJS не загружается модуль

EDIT: Это происходит только с IE (проверено на IE10)

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

SCRIPT5022: Нет модуля: myAppModule

myAppModule - это модуль angular, определенный в app.js, который загружается после загрузки angular.js

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

и автоматически загружается через:

<html ng-app="myAppModule">

Сценарии загружаются следующим образом (без загрузчика AMD):

<script>window.jQuery ||
    document.write('<script src="js/vendor/jquery-1.8.0.min.js"></script>')</script>
<script>window.angular ||
    document.write('<script src="js/vendor/angular-1.0.2.min.js"></script>')</script>

<script src="js/app.js"></script>
<script src="js/controller.js"></script>

Я считаю, что angularjs загружается первым и автоматически загружается приложение, но app.js еще не загружен

4b9b3361

Ответ 1

Хорошо, я не знаю, почему происходит автоматическая загрузка, но если я вручную загружаю приложение, он отлично работает.

например.

<html>

...

<script src="js/app.js"></script>
<script src="js/controller.js"></script>
<script>angular.bootstrap(document, ['myAppModule']);</script>

Ответ 2

Я чувствовал себя идиотом, когда обнаружил, что я делаю неправильно, но на тот случай, если вы похожи на меня, тогда сначала нужно проверить некоторые вещи:

  • Сначала убедитесь, что дочерний модуль загружается. В моем случае я должен был убедиться, что дочерний модуль был физически до моего родительского модуля. Вы можете подтвердить это, поставив точку останова на каждую строку инициализации модуля.
  • Даже при правильном физическом порядке заказ выполнения все еще отключен. Один из моих модулей был завернут в функцию самоисполнения, а другой - нет. Doh.
  • В дочерней функции произошла ошибка, которая фактически вызвала эту ошибку, отображаемую дважды в консоли. Это связано с тем, что я использую такой синтаксис:

    var mod = angular.module("blah", []);
    mod.filter("filterName", function(){ ... }); 
    

    В какой-то момент я забыл о пустых скобках при запуске модуля, поэтому строка выглядела так: "//p >

    var mod = angular.module("blah");  // <-- wrong
    

Чтобы воспроизвести, убедитесь, что дочерний модуль выполняется первым и не имеет ошибок.

Ответ 3

У меня была такая же проблема, только в IE9. Более низкие версии IE действительно работали нормально, как и более новые браузеры.

Ручная перезагрузка решила проблему, но указала на ошибку "Неизвестный поставщик" для фильтра, который является частью моего модуля. Обратите внимание, что фильтр по-прежнему функционировал так, как ожидалось.

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

Итак, если имя моего модуля было myAppModule, тогда имя файла должно быть myAppModule.js, а не my_app_module.js.

Ответ 4

app.config(['$stateProvider', ($stateProvider) => {
  $stateProvider.state('login', {
    url: '/login',
    templateUrl: 'partials/login.html'
  }).state('dashboard', {
    url: '/dashboard',
    templateUrl: 'partials/dashboard.html'
  })
}])

В моем случае Internet Explorer не любил функции стрелок. Изменение их для функции() {} нотации устранило проблему:

app.config(['$stateProvider', function ($stateProvider) {
  $stateProvider.state('login', {
    url: '/login',
    templateUrl: 'partials/login.html'
  }).state('dashboard', {
    url: '/dashboard',
    templateUrl: 'partials/dashboard.html'
  })
}])

Ответ 5

Кстати, используя Angular 1.0.6, загрузка jQuery перед Angular (жестко закодированные теги script) заставляет IE10 выкидывать ошибку "no Module".

Единственный вариант, который я могу найти, чтобы исправить это, - это вручную загрузить и обеспечить, чтобы мой app.js, определяющий модуль, был загружен после всех других ссылок на дочерние модули (например, упоминания Варнава).

Ответ 6

У нас была такая же проблема только в IE. Это было вызвано опечаткой (какая-то кошка должна была наступить на клавиатуру):

<script type=" text/javascript" src="assets/js/app.js"></script>

Ведущее пространство в значении атрибута type вызывало проблему. Как только оно было удалено, приложение снова отлично работает.