2014-09-24 66 views
2

我想在我的角度應用程序中縮小我的js文件。我知道有一些關於依賴注入和縮小的pbs,但我覺得我遵循了我在互聯網上找到的最佳實踐。AngularJS - 縮小錯誤

這裏是我的代碼的結構:

我的供應商:

function myPvdr() { 
    this.getUrl = function() { 
    return 'http://some/api/call'; 
    }; 
    this.$get = function($q, $http) { 
    var self = this; 
    return { 
     getData: function(points) { 
     var d = $q.defer(); 
     $http({ 
      method: 'GET', 
      url: self.getUrl(), 
      cache: true 
     }).success(function(data) { 
      d.resolve(data); 
     }).error(function(err) { 
      d.reject(err); 
     }); 
     return d.promise; 
     } 
    } 
    } 
} 

我的控制器:

function myCtrl($scope, MyProvider, localStorageService) { 
    // some code 
} 

我的模塊:

angular.module('myApp', ['LocalStorageModule', 'ngAnimate']) 
    .provider('MyProvider', myPvdr) 

    // Loading controllers into the module 
    .controller('myCtrl', ['$scope', 'MyProvider', 'localStorageService', myCtrl]) 

它正常工作時unminified。但使用醜化任務從咕嚕後,我得到打印到控制檯以下錯誤:

Error: [$injector:unpr] http://errors.angularjs.org/1.3.0-rc.2/$injector/unpr?p0=aProvider%20%3C-%20a%20%3C-%20MyProvider 

我在做什麼錯?

+0

http://stackoverflow.com/questions/23130500/angularjs-error-unknown-provider-aprovider-a?rq=1 – 2014-09-24 19:25:42

+2

提供商代碼將是 .provider( 'MYPROVIDER',['$ Q ','$ http',myPvdr]) – 2014-09-24 19:30:25

回答

3

你最好不要讓你的代碼minfication安全:

有兩種選擇,$注射或內嵌添加它,當你在聲明功能,並使用帶引號的PARAMS陣列(引號中的東西不精縮)

https://docs.angularjs.org/tutorial/step_05

創建在其上保持一個字符串數組控制器功能的$注入性。數組中的每個字符串都是爲相應參數注入的服務的名稱。在我們的示例中,我們將編寫:

function PhoneListCtrl($scope, $http) {...} 
PhoneListCtrl.$inject = ['$scope', '$http']; 
phonecatApp.controller('PhoneListCtrl', PhoneListCtrl); 

使用內聯註釋,而不是僅提供函數,而是提供數組。該數組包含服務名稱的列表,後面跟着函數本身。

function PhoneListCtrl($scope, $http) {...} 
phonecatApp.controller('PhoneListCtrl', ['$scope', '$http', PhoneListCtrl]); 
+0

我已經嘗試了這兩種方法與最新的角度和縮小看起來正確,但我仍然得到錯誤 – 2017-05-25 08:32:18

+0

@ JJ_Coder4Hire我會問一個新的quesiton並指出哪個版本的角你正在使用(原始,2等)。這是一個非常古老的解決方案,適用於角度1 – John 2017-05-25 15:28:42

1

如果您已經在使用grunt,請考慮使用grunt-ng-annotate task。 ng-annotate是一個在需要的地方自動插入適當的縮小準備語法的工具。