Rails 3 + angularjs + minification在生产中不起作用:未知提供者:eProvider

我已经按照我可以找到的所有指令来修复缩小,例如

var MyController = function(renamed$scope, renamedGreeter) { ... } MyController.$inject = ['$scope', 'greeter']; 

 someModule.factory('greeter', ['$window', function(renamed$window) { ...; }]); 

然而棱角分明拒绝继续工作。 它总是抛出错误“Unknown provider:eProvider”

以下是我尝试让它工作的两次尝试……任何人都可以帮忙吗?

https://github.com/jemminger/angular-test1

https://github.com/jemminger/angular-test2

他们已经预先编译了资产,并且开发模式被配置为生产,因此您应该只能“使用”来查看(不)工作。

找到了! 他们从未说过将注入修复应用于服务……解决方案是改变这个:

 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} }); }]); 

请记住,在指令中的控制器上也使用DI。 花了我几个小时…… CS例子:

错误:

 controller: ($scope) -> $scope.closeModal = -> ModalService.close() 

对:

 controller: ["$scope" ($scope) -> $scope.closeModal = -> ModalService.close() ] 

确保将DI模式应用于需要在模块中进行注入的所有function定义。 很容易错过一个。 如果您正在使用routeProvider,工厂,服务等,则他们都需要应用DI模式。 在我抓住它们之前,我最终部署了多次:P