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
- Rails 4 Asset Pipeline:来自js的asset_path中的资产缺失指纹
- 将Angularjs和Rails应用程序分离为独立组件
- Rails AngularJS指令和模板中的图像资源
- Rails复制了资源中的参数
- 可以grount自动包含index.html中的所有js吗?
- 我们如何以干燥的方式使用带有angularjs的rails路由?
- AngularJS + Rails:后退按钮“警告:尝试不止一次加载角度。”
- Javascript错误未知提供者:在Rails缩小Angularjs之后的tProvider < – t
- Access-Control-Allow-Origin不允许使用Rails 3和Angularjs Origin http:// localhost。