用grunt缩小angularjs项目

cle*_*ent 3 angularjs gruntjs yeoman

当我用grunt缩小我的angularJS项目时,我有注射问题.为了做一个简单的测试,我尝试用npm生成器创建一个角度项目之后的样本做同样的事情,如下所示:

npm install -g generator-angular
yo angular
Run Code Online (Sandbox Code Playgroud)

我只用凉亭添加一些东西.这是我的凉亭文件:

{
  "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"
}
}
Run Code Online (Sandbox Code Playgroud)

然后我改变了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);
        }
    };
});
}]);
Run Code Online (Sandbox Code Playgroud)

如果我说"咕噜咕噜"的任务一切都好.但是,如果我执行"grunt build"然后尝试通过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 
Run Code Online (Sandbox Code Playgroud)

我在几篇文章中读到,我必须使用ngmin任务来缩小,但它已经在样本yeoman项目中完成了.我怎么能解决这个问题呢?

非常感谢你

克莱门特

Pet*_*gne 14

如果您查看缩小的scripts.js,您会注意到$ q服务获得缩小的名称"a".这就是为什么你得到错误消息aProvider未知.

必须将$ q定义为依赖项并正确注入.

代替

$httpProvider.interceptors.push(function ($q) {
Run Code Online (Sandbox Code Playgroud)

$httpProvider.interceptors.push(['$q', function ($q) { ... }]);
Run Code Online (Sandbox Code Playgroud)