Javascript错误未知提供者:在Rails缩小Angularjs之后的tProvider < - t

use*_*793 19 ruby-on-rails minify angularjs

在编译资产时打开资源放大后,我的Rails应用程序无效.我转换Angular控制器使用括号表示法,并得到以下错误,有没有办法调试这个?

编译application.js https://gist.github.com/jianbo/6665161

JS错误

Error: Unknown provider: tProvider <- t
at Error (<anonymous>)
at me:3001/assets/application-4f6cd4e170fc6ce5d181d869af318557.js:817:21665
at Object.i [as get] (me:3001/assets/application-4f6cd4e170fc6ce5d181d869af318557.js:817:20671)
at me:3001/assets/application-4f6cd4e170fc6ce5d181d869af318557.js:817:21753
at i (localme:3001/assets/application-4f6cd4e170fc6ce5d181d869af318557.js:817:20671)
at n (me:3001/assets/application-4f6cd4e170fc6ce5d181d869af318557.js:817:20805)
at Object.r [as instantiate] (me:3001/assets/application-4f6cd4e170fc6ce5d181d869af318557.js:817:21447)
at me:3001/assets/application-4f6cd4e170fc6ce5d181d869af318557.js:818:604
at me:3001/assets/application-4f6cd4e170fc6ce5d181d869af318557.js:817:28889
at r (me:3001/assets/application-4f6cd4e170fc6ce5d181d869af318557.js:817:8277) application-4f6cd4e170fc6ce5d181d869af318557.js:818
(anonymous function) application-4f6cd4e170fc6ce5d181d869af318557.js:818
(anonymous function) application-4f6cd4e170fc6ce5d181d869af318557.js:818
r.$broadcast application-4f6cd4e170fc6ce5d181d869af318557.js:818
(anonymous function) application-4f6cd4e170fc6ce5d181d869af318557.js:818
l application-4f6cd4e170fc6ce5d181d869af318557.js:818
l application-4f6cd4e170fc6ce5d181d869af318557.js:818
(anonymous function) application-4f6cd4e170fc6ce5d181d869af318557.js:818
r.$eval application-4f6cd4e170fc6ce5d181d869af318557.js:818
r.$digest application-4f6cd4e170fc6ce5d181d869af318557.js:818
r.$apply application-4f6cd4e170fc6ce5d181d869af318557.js:818
r application-4f6cd4e170fc6ce5d181d869af318557.js:818
m application-4f6cd4e170fc6ce5d181d869af318557.js:818
v.onreadystatechange application-4f6cd4e170fc6ce5d181d869af318557.js:818
Run Code Online (Sandbox Code Playgroud)

Mik*_*ver 48

这个错误本身就是Angular说它不知道要为't'注入什么.这意味着't'必须是某个注射点的缩小名称.

如果它在缩小之前有效但在此之后不能使用,那么它必须是某个地方不使用最小安全注射方法的问题.

我会检查以确保你所做的一切都是安全的,而且你并不是想要缩小angular.js本身的非minsafe版本.始终使用角度包中的.min而不是缩小您自己(或者如果您确实想要缩小自己,请确保它是minsafe版本).

这是一个让控制器安全的例子.以下不是安全的:

angular
    .module('myModule')
    .controller('MyCtrl', function($scope, myService) { 
        //your non-minsafe controller 
    });
Run Code Online (Sandbox Code Playgroud)

为了使它成为minsafe,我们将函数调用封装在一个数组中,该数组以我们想要注入的内容开头,并以相同的参数顺序结束于函数调用中:

angular
    .module('myModule')
    .controller('MyCtrl', ['$scope', 'myService', function($scope, myService) { 
        //your minsafe controller 
    }]);
Run Code Online (Sandbox Code Playgroud)


Jas*_* FB 12

我对gem hiravgandhi/angularjs-rails有同样的问题

通过更改config/environments/production.rb中的设置,我能够在生产中处理minifcation

config.assets.js_compressor = Uglifier.new(mangle:false)

根据gem安装说明使用带有hiravgandhi/angularjs-rails gem的Rails 4.0.2应用程序.


小智 7

我有同样的问题,我发现问题不在.controller调用,它在.config中,它不是minification安全.

之前

var app = angular.module('myModule', ['restangular']);

app.config(function(RestangularProvider) {
    RestangularProvider.setDefaultHeaders({'Content-Type': 'application/json'});
    RestangularProvider.setBaseUrl('http://myapi.com/api/v1');
});
Run Code Online (Sandbox Code Playgroud)

var app = angular.module('myModule', ['restangular']);

app.config(['RestangularProvider', function(RestangularProvider) {
    RestangularProvider.setDefaultHeaders({'Content-Type': 'application/json'});
    RestangularProvider.setBaseUrl('http://myapi.com/api/v1');
}]);
Run Code Online (Sandbox Code Playgroud)