2014-03-28 57 views
3

當我用grunt縮小我的angularJS項目時,注入時出現問題。做一個簡單的測試,我試圖做與樣品同樣的事情,我們有這樣的NPM發生器創建一個角項目後:使用grunt的angularjs項目縮小

npm install -g generator-angular 
yo angular 

我加一點點事情亭子。這裏是我的亭子文件:

{ 
    "name": "angular-test", 
    "version": "0.0.0", 
"dependencies": { 
"angular": "1.2.15", 
"json3": "~3.2.6", 
"es5-shim": "~2.1.0", 
"jquery": "~1.11.0", 
"bootstrap": "~3.0.3", 
"angular-route": "~1.2.15", 
"angular-bootstrap": "~0.10.0", 
"angular-sanitize": "~1.2.15", 
"angular-cookies": "~1.2.15", 
"angular-resource": "~1.2.15" 
}, 
"devDependencies": { 
"angular-mocks": "1.2.15", 
"angular-scenario": "1.2.15" 
}, 
"resolutions": { 
    "angular": "1.2.6" 
} 
} 

然後,我改變了app.js文件這樣的:

'use strict'; 

angular 
.module('angularTestApp', [ 
    'ngCookies', 
    'ngResource', 
    'ngSanitize', 
    'ngRoute' 
]) 
.config(['$routeProvider', '$httpProvider', function ($routeProvider, $httpProvider) { 
    $httpProvider.interceptors.push(function ($q) { 
     //We don't care about that ... 
     return { 
     'responseError': function (rejection) { 
      if(rejection.status === 401) { 
       console.log("Unauthorized page. Must redirect to "); 

       return; 
      } 
      return $q.reject(rejection); 
     } 
    }; 
}); 
}]); 

如果我勞克在「咕嚕服務」工作一切正常。 但是,如果我做了「咕嚕構建」,然後嘗試通過Apache訪問index.html文件例如,我有以下錯誤:

Uncaught Error: [$injector:unpr] Unknown provider: aProvider <- a <- $http <- $compile 
http://errors.angularjs.org/1.2.15/$injector/unpr?p0=aProvider%20%3C-%20a%20%3C-%20%24http%20%3C-%20%24compile 

我,我必須使用幾個帖子讀ngmin任務來縮小,但它已經在示例yeoman項目中完成。我該如何解決這個問題?

非常感謝您

克萊門特

+0

與IIS重現它在我的Windows機器上的網絡服務器。相同的錯誤消息。我試圖找出它是什麼 – PeterFromCologne

+0

找不到它。導致問題的線路是返回$ q.reject(拒絕);但代碼是正確的,下面的角度文檔 – PeterFromCologne

+0

你好,問這個問題我finnaly理解這篇文章:http://stackoverflow.com/questions/17238759/angular-module-minification-bug 對於下一個用戶:你必須取消註釋在「醜化」任務繁重的配置文件 並添加下面這個任務: 「選項:{ 軋液:假 },」 我只是不明白爲什麼這個最初評論。有人可以告訴我,如果這個解決方案是一個好的或不好的?爲什麼這是評論?什麼是「mangle:false」的選項? 非常感謝 – clement

回答

14

如果你看看精縮scripts.js中,你會發現,$ Q服務獲取縮小的名稱爲「A」。這就是爲什麼你得到aProvider錯誤消息是未知的。

$ q必須定義爲依賴關係並正確注入。

代替

$httpProvider.interceptors.push(function ($q) { 

$httpProvider.interceptors.push(['$q', function ($q) { ... }]); 
+0

https://github.com/btford/ngmin/issues/59是真正的問題 – Selva

+0

這個固定爲我 – Yeak