Угловой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 еще не загружен
Ответы
Ответ 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 вызывало проблему. Как только оно было удалено, приложение снова отлично работает.