2016-06-07 5 views
0

Meine app funktioniert gut, wenn ich es installieren und es in einem Browser laufen

ich erfolgreich meine alle erreichen können Controller/Dienstleistungen. und sie wurden über Submodule miteinander verbunden.Angular App funktioniert gut, aber ngMock NICHT Module ordnungsgemäß geladen

Ich benutzte Submodule, um die Zustände/Routen besser für UI-Router zu organisieren. (Früher hatten wir alle unsere Staaten in der App dot js-Datei. Es waren wie 50. Jetzt sind sie in kleinere Module organisiert).

app.js [Modul-Datei]

var phpApp = angular.module("phpApp", 
[ 
    "ui-router" 
    "phpApp.components" , ... 

]).config(...).run(...); 

components.js

var ComponentModule = angular.module("phpApp.components", 
[ 
    "ui-router" 
    "phpApp.components.user" , 
    "phpApp.components.client" 
    ... 

]).config(...).run(...); 

user.js [Modul-Datei [Modul-Datei, Staaten/Routen enthält], enthält Zustände/Routen]

var UserModule = angular.module("phpApp.components.user", 
[ 
    "ui-router" 

]).config(...).run(...); 

benutzer-controller.js // LASTEN in Ordnung; ist ein Controller.

angular.module('phpApp.components').controller('UserController', ....); 

Client-controller.js // tut NICHT Last! Kann 'phpApp.components' Modul ...

angular.module('phpApp.components').controller('ClientController', ...); 

Meine Datei index.html lädt die Skripte in dieser Reihenfolge finden:

<script src="app.js"></script> 
<script src="components/components-module.js"></script> 
<script src="components/user/user-module.js"></script> 
<script src="components/client/client-module.js"></script> 
... 
<script src="components/user/user-controller.js"></script> 
<script src="components/client/**client-controller.js**"></script> 

nicht, daß ich es. Mein Client-Controller lädt nach meinem Benutzer-Controller ... aber es ist nicht in der Lage, das richtige Modul zu finden?

ich den Fehler:

Uncaught Error: [$injector:nomod] Module 'phpApp.components' 
is not available! You either misspelled the module name or 
forgot to load it. 

ich sehr verwirrt bin und an diesem Punkt frustriert. Ich bin mir nicht sicher, wo ich falsch liege.

Antwort

0

Die Antwort liegt in der Karma-Konfigurationsdatei (karma.conf.js Standardeinstellung)

Die Antwort, wie erwartet, war ein einfaches.

hatte ich eine Regel alle JavaScript-Dateien enthalten:

"app/app.js", 
"app/components/**/*.js", 

Sie müssen Sie Ihre Laderegeln stellen Sie sicher, umschreiben zunächst alle Modul JS-Dateien laden:

"app/app.js", 
"app/components/**/*-module.js", <-- modules must load first 
"app/components/**/*.js", 

Damit auslegen Ich habe mein Projekt eingerichtet wo:

1) controllers are in their respective xxx-controller.js files, 
2) ervices are in xxx-service.js files and 
3) modules are in xxx-module.js files