EDIT: Cela ne se produit qu'avec IE (testé sur IE10)
J'ai une application qui se charge très bien au départ, cependant, une fois rafraîchi, il donne cette erreur:
SCRIPT5022: Pas de module: myAppModule
myAppModule est un module angulaire défini dans app.js qui est chargé après le chargement de angular.js
angular.module('myAppModule', []);
et est auto-amorcé via:
<html ng-app="myAppModule">
Les scripts sont chargés comme suit (pas de chargeur 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>
Je pense que angularjs est chargé en premier et lance automatiquement l'application, mais app.js n'a pas encore été chargé
Ok, je ne sais pas pourquoi l’auto-amorçage échoue, mais si j’amorce manuellement l’application, cela fonctionne bien.
par exemple.
<html>
...
<script src="js/app.js"></script>
<script src="js/controller.js"></script>
<script>angular.bootstrap(document, ['myAppModule']);</script>
Je me sentais comme et idiot quand j'ai trouvé ce que je faisais mal, mais au cas où vous seriez comme moi, voici quelques autres points à vérifier en premier:
Il y a eu une erreur dans la fonction enfant qui a provoqué l'affichage de cette erreur deux fois dans la console. C'est parce que j'utilise une syntaxe comme celle-ci:
var mod = angular.module("blah", []);
mod.filter("filterName", function(){ ... });
A un moment, j'ai oublié les crochets vides lors du démarrage du module. La ligne ressemblait à ceci et renvoyait cette erreur:
var mod = angular.module("blah"); // <-- wrong
Pour récapituler, assurez-vous que le module enfant s'exécute en premier et ne comporte aucune erreur.
J'ai eu ce même problème, seulement dans IE9. Les versions inférieures de IE ont en fait bien fonctionné, tout comme les nouveaux navigateurs.
L'amorçage manuel a résolu le problème, mais une erreur "Fournisseur inconnu" a été renvoyée pour un filtre faisant partie de mon module. Notez que le filtre semblait toujours fonctionner comme prévu.
En fin de compte, la solution qui a résolu mon problème et mis fin aux erreurs générées était simplement de renommer le fichier du module pour qu'il soit identique à celui du module.
Donc, si le nom de mon module était myAppModule
, alors le nom du fichier devrait être myAppModule.js
et non my_app_module.js
.
app.config(['$stateProvider', ($stateProvider) => {
$stateProvider.state('login', {
url: '/login',
templateUrl: 'partials/login.html'
}).state('dashboard', {
url: '/dashboard',
templateUrl: 'partials/dashboard.html'
})
}])
Dans mon cas, Internet Explorer n'aimait pas les fonctions de flèche. Les changer en notation function () {} corrigeait le problème:
app.config(['$stateProvider', function ($stateProvider) {
$stateProvider.state('login', {
url: '/login',
templateUrl: 'partials/login.html'
}).state('dashboard', {
url: '/dashboard',
templateUrl: 'partials/dashboard.html'
})
}])
Nous avons eu le même problème seulement dans IE. Cela était dû à une faute de frappe (un chat a dû marcher sur le clavier):
<script type=" text/javascript" src="assets/js/app.js"></script>
Le premier espace dans la valeur de type-Attribute était à l'origine du problème. Dès qu'elle a été supprimée, l'application a à nouveau fonctionné correctement.
A propos, en utilisant Angular 1.0.6, le chargement de jQuery avant angular (balises de script codées en dur) provoque IE10 pour générer l'erreur 'no Module'.
La seule option que j'ai pu trouver pour le corriger est de démarrer manuellement et de vérifier que mon app.js qui définit le module a été chargé après toutes les autres références de modules enfants (comme celle mentionnée par Barnabas).