Rails 3 + angularjs + minification не работает в производстве: Неизвестный поставщик: eProvider
Я выполнил все инструкции, которые я могу найти для исправления мини-кода, например
var MyController = function(renamed$scope, renamedGreeter) {
...
}
MyController.$inject = ['$scope', 'greeter'];
и
someModule.factory('greeter', ['$window', function(renamed$window) {
...;
}]);
пока angular отказывается работать. Он всегда выдает ошибку "Неизвестный поставщик: eProvider"
Вот мои две попытки заставить его работать... может ли кто-нибудь помочь?
https://github.com/jemminger/angular-test1
https://github.com/jemminger/angular-test2
У них уже были предварительно скомпилированные активы и режим разработки настроен на работу как производство, поэтому вы должны просто иметь возможность "рельсов s", чтобы увидеть (не) работу.
Ответы
Ответ 1
Нашел! Они никогда не говорили, чтобы применить исправления для инъекций к услугам тоже... Решение состоит в том, чтобы изменить это:
angular.module('itemServices', ['ngResource']).
factory('Item', function($resource){
return $resource('items/:item_id.json', {}, {
query: {method:'GET', params:{ item_id: 'all' }, isArray:true}
});
});
:
angular.module('itemServices', ['ngResource']).
factory('Item', ['$resource', function($resource){
return $resource('items/:item_id.json', {}, {
query: {method:'GET', params:{ item_id: 'all' }, isArray:true}
});
}]);
Ответ 2
Помните, что также использовать DI на контроллерах внутри директив. Взял мне часы... Пример CS:
не так:
controller: ($scope) ->
$scope.closeModal = ->
ModalService.close()
право:
controller: ["$scope"
($scope) ->
$scope.closeModal = ->
ModalService.close()
]
Ответ 3
Обязательно применяйте шаблон DI ко всем определениям функций, которые требуют инъекции внутри вашего модуля. Его легко пропустить. Если вы используете routeProvider, factory, сервисы и т.д., Все они должны иметь шаблон DI. Я закончил развертывание несколько раз, прежде чем я поймал их всех: P