/ / Minifikacja psuje aplikację Angularjs - angularjs

Minifikacja łamie Angularjs app - angularjs

Niedawno dodałem do mojej aplikacji usługę, która spowodowała zgłoszenie błędu. Kod działa poprawnie, jeśli nie jest zminimalizowany. Jednak po zminimalizowaniu generuje błąd. Oto skrócony kod:

var service1 = function ($resource) {
// code here
};
service1.$inject = ["$resource"];

var service2 = function (service1) {
// code here
};
service2.$inject = ["service1"];

var service3 = function ($q, service2) {
// code here
};
service3.$inject = ["$q", "service2"];

Oto błąd, który otrzymuję po uruchomieniu zminimalizowanego kodu:

Error: [$injector:unpr] Unknown provider: nProvider <- n <- service1 <- service2 <- service3

Wrzucam tutaj wszystkie wymagane zależnościwięc ten błąd jest bardzo zagmatwany. Wydaje mi się, że przyczyną problemu jest fakt, że service2 jest zależnością od service3, ale także jest zależny od service1. To powinno być legalne, prawda?

Odpowiedzi:

3 dla odpowiedzi № 1

Przegapiłeś znak dolara service1.inject: service1.$inject.


2 dla odpowiedzi nr 2

Oprócz typu lepiej używaj tej składni (nazywanie usług, fabryk itp.), Która jeszcze lepiej chroni Cię podczas minifikacji kodu. Spójrz też na to oficjalna notatka dotyczące minifikacji.

var module = angular.module("myModule", [])

module.factory("service1", ["$resource", function($resource) { ... }]);
module.factory("service2", ["service1", function(service1) { ... }]);
module.factory("service3", ["$q", "service2", function($q, service2) { ... }]);