错误:JavaScript压缩后的未知提供程序

时间:2016-02-15 12:36:34

标签: javascript angularjs

我有AngularJS控制器代码

(function() {
    'use strict';
    angular
      .module('app')
      .controller('TemplateCtrl', TemplateCtrl);

      function TemplateCtrl($http, $auth, $rootScope,$scope){

      }
})();

http://jscompress.com/压缩后,我得到了以下输出。

!function(){"use strict";function t(t,l,n,e){}angular.module("app").controller("TemplateCtrl",t)}();

在压缩之前没有错误但在压缩之后我得到了错误

 Error: [$injector:unpr] Unknown provider: tProvider <- t <- TemplateCtrl

enter image description here

我找不到任何解决这个问题的线索?

感谢您的帮助和时间。

4 个答案:

答案 0 :(得分:2)

对于角度压缩,您需要做一些额外的事情。您需要让它知道如何压缩依赖项。所以你需要这个:

(function() {
'use strict';
angular
  .module('app')
  .controller('TemplateCtrl', ["$http", "$auth", "$rootscope", "$scope", TemplateCtrl]);

  function TemplateCtrl($http, $auth, $rootScope,$scope){

  }
})();

答案 1 :(得分:0)

Angular根据名称解析依赖关系。

在此处阅读详情:https://stackoverflow.com/a/35336414/2405040Dependency Annotation

并改变你的代码:

(function() {
    'use strict';
    angular
      .module('app')
      .controller('TemplateCtrl', ["$http", "$auth", "$rootscope", "$scope", TemplateCtrl]);

      function TemplateCtrl($http, $auth, $rootScope,$scope){

      }
})();

为防止缩小内容并使用内联注释语法编写代码,请添加ng-app注释$(window).scroll(function() { var xScroll = $(this).scrollTop(); $(".some-class").each(function() { var that = this; if(xScroll > $(that).offset().top - ($(window).height() / 1.2)) { setTimeout(function(){ $(that).addClass('some-other-class'); },150); } }); }); 属性。

答案 2 :(得分:0)

下面的代码对我有用。

(function() {
'use strict';
angular
  .module('app')
  .controller('TemplateCtrl', TemplateCtrl);
  TemplateCtrl.$inject  = ['$http', '$auth', '$rootScope', '$scope'];

  function TemplateCtrl($http, $auth, $rootScope,$scope){

  }
})();

压缩后这是

!function(){"use strict";function t(t,o,e,c){}angular.module("app").controller("TemplateCtrl",t),t.$inject=["$http","$auth","$rootScope","$scope"]}();

感谢所有人。

答案 3 :(得分:-2)

以这种方式让你的控制者:

angular
  .module('app')
  .controller('TemplateCtrl', function () {

 var something = function ($http, $auth, $rootScope,$scope){

  }
});