2016-05-29 24 views
0

Ich habe Probleme mit meinem Heroku-Build und konnte nicht fest, warum dieses Winkelmodul nicht instanziiert. Wenn ich meine App auf localhost laufe, läuft alles gut, also nehme ich an, dass der Fehler während des Uplification-Prozesses von Grunt auftritt. Alle meine ähnlichen Controller-Module scheinen zu laden und ich kann sie in der Registerkarte "Sources" in Dev-Tools sehen. Allerdings wird diese Controller-Datei nicht angezeigt, nehme ich an, da ein Fehler darin ist.Angular Controller-Modul nicht instanziieren nach Grunt Uglify

Hier ist das Modul (Controller), die nicht instanziiert:

angular.module('inspector.location', []) 
.controller('LocationDisplayController', function($scope, $http, $routeParams, 
ResultService) { 
    var controller = this; 
    this.inspections = ResultService.inspections; 
}); 

Was es wie uglified aussieht (richte ich in einem Versuch, falsche mangle dieses Problem zu beheben): angular.module (“ inspector.location“, []). Regler ("LocationDisplayController", function ($ scope, $ http, $ routeParams, Resu LTservice) {this.inspections = ResultService.inspections})

Dies ist es nur nicht integrierte Abhängigkeit:

.service('ResultService', function(){ 
    this.value = ''; 
    this.inspections = ''; 
}) 

Hier ist app.js:

angular.module('inspector', [ 
    'inspector.search', 
    'inspector.results', 
    'inspector.location', 
    'inspector.services', 
    'ngRoute' 
]) 

und hier ist der vollständige Fehler:

angular.js:4630 Uncaught Error: [$injector:modulerr] Failed to instantiate 
module inspector due to: 
Error: [$injector:modulerr] Failed to instantiate module inspector.location 
due to: 
Error: [$injector:nomod] Module 'inspector.location' is not available! You 
either 
misspelled the module name or forgot to load it. If registering a module 
ensure 
that you specify the dependencies as the second argument. 
http://errors.angularjs.org/1.5.6/$injector/nomod?p0=inspector.location 
at https://ancient-sea-93514.herokuapp.com/scripts/angular/angular.js:68:12 
. . . . 

** Edit für Änderungen vorgenommen.
Neue Version von LocationDisplayController:

angular.module('inspector.location', []) 
.controller('LocationDisplayController', ['ResultService', 
function(ResultService) { 
    var controller = this; 
    controller.inspections = ResultService.inspections; 
}]); 

LocationDisplayController.$inject = ['ResultService'] 

Antwort

2

Sie müssen die Abhängigkeiten mit der Array-Syntax wie spezifizieren:

angular.module('inspector.location', []) 
    .controller('LocationDisplayController', ['$scope', '$http', '$routeParams', 
    'ResultService', 
    function($scope, $http, $routeParams, ResultService) { 
     var controller = this; 
     this.inspections = ResultService.inspections; 
    } 
    ]); 

oder explizit den Injektor so dass Winkel weiß, was nach minification zu injizieren.

+1

oder verwenden Sie ng-annotate und lassen Sie grunt hinzufügen die Abhängigkeit injection array – charlietfl

+0

Das Modul ist immer noch nicht instanziieren, nachdem diese Änderungen vorgenommen wurden (Ich habe sie unabhängig versucht, aber sie hier zusammen gepostet). Die Datei für den Controller wird jedoch jetzt auf meiner Registerkarte "Quellen" der Chrome-Entwicklungstools angezeigt, enthält jedoch den HTML-Code für meine index.html anstelle des JavaScript-Codes für den Controller. Auch habe ich die Abhängigkeiten I herausgenommen, die der Controller nicht verwendet hat. – swoopedj

+0

Ich musste einen Tippfehler aussortieren, den Chrome anscheinend nicht interessierte, als ich die App auf localhost ausführte, bevor ich überhaupt mit dem Abhängigkeitsproblem umgehen konnte. Vielen Dank! Ich ging mit der $ Injector Option. – swoopedj