在.RUN功能AngularJS注入服务 [英] AngularJS Inject service in .run function

查看:407
本文介绍了在.RUN功能AngularJS注入服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的AngularJS应用程序,使用约曼,污染减量我的应用程序时,我有这个错误:

 未捕获的错误:[$喷油器:unpr]未知提供商:aProvider<  -  A<  -  $ HTTP<  - 的AuthenticationService

这是我显然不具备与缩小了。

下面是在一个单独的runner.js文件我的服务的定义:

  angular.module('对myApp')。运行(['$ rootScope','的AuthenticationService','FlashService','SessionService',函数($ rootScope,的AuthenticationService,FlashService, SessionService){
   //一些code
}]);

我当然想对典型的注射错误的污染减量的时候,但我奋力地看到什么是错在我的code ...

更新

我AutenticationService:

  angular.module('对myApp')。工厂(的AuthenticationService,['$ HTTP,$ rootScope','$ sanitize方法','SessionService','FlashService ,设置,函数($ HTTP,$ rootScope,$消毒,SessionService,FlashService设置){    VAR cacheSession =功能(){
        SessionService.set('认证',真);
    };    VAR uncacheSession =功能(){
        SessionService.unset('认证');
        SessionService.unset(用户);
    };    VAR loginError =功能(响应){
        FlashService.show(警告,response.flash);
    };    VAR loginSuccess =功能(响应){
        SessionService.set(用户,JSON.stringify(响应));
        FlashService.clear();
    };    VAR logoutSuccess =功能(响应){
        FlashService.show('成功',response.flash);
    };    VAR sanitizeCredentials =功能(凭证){
        返回{
            电子邮件:$的sanitize(credentials.email)
            密码:$的sanitize(credentials.password)
        };
    };    返回{
        登录:功能(凭证){
            VAR登录= $ http.post(SETTINGS.urlBackend +/认证/注册,sanitizeCredentials(证书));
            login.success(cacheSession);
            login.success(loginSuccess);
            login.error(loginError);
            返回登录;
        },
        注销:功能(){
            VAR注销= $ http.get(SETTINGS.urlBackend +/认证/注销);
            logout.success(uncacheSession);
            logout.success(logoutSuccess);
            logout.error(loginError);
            返回注销;
        },
        isLoggedIn:功能(){
            VAR检查= $ http.get(SETTINGS.urlBackend +/认证/检查);
            返回(选中&安培;&安培; SessionService.get('验证'));
        }
    };
}]);


解决方案

尝试设置轧:在你的 Gruntfile.js的丑化配置虚假

  grunt.initConfig({
  // ...
  丑化:{
    选项​​:{
      轧:假的
    }
  }
});

我已经利用鲍尔某些包时,这种情况发生。我相信有些工具的角度UI套件是不兼容的,因为某些原因。

In my AngularJS app, using Yeoman, when minifying my app I have this error :

Uncaught Error: [$injector:unpr] Unknown provider: aProvider <- a <- $http <-  AuthenticationService 

that I obviously do not have before minifying.

Here is the definition of my service in a separate runner.js file :

angular.module('myApp').run(['$rootScope', 'AuthenticationService', 'FlashService', 'SessionService', function ($rootScope, AuthenticationService, FlashService, SessionService) {
   //some code
}]);

I thought of course about the typical Injection error when minifying but I am struggling to see what is wrong in my code...

UPDATE

My AutenticationService :

angular.module('myApp').factory("AuthenticationService", ['$http', '$rootScope', '$sanitize', 'SessionService', 'FlashService', 'SETTINGS', function($http, $rootScope, $sanitize, SessionService, FlashService, SETTINGS) {

    var cacheSession   = function() {
        SessionService.set('authenticated', true);
    };

    var uncacheSession = function() {
        SessionService.unset('authenticated');
        SessionService.unset('user');
    };

    var loginError = function(response) {
        FlashService.show('warning', response.flash);
    };

    var loginSuccess = function(response) {
        SessionService.set('user', JSON.stringify(response));
        FlashService.clear();
    };

    var logoutSuccess = function(response) {
        FlashService.show('success', response.flash);
    };

    var sanitizeCredentials = function(credentials) {
        return {
            email: $sanitize(credentials.email),
            password: $sanitize(credentials.password)
        };
    };

    return {
        login: function(credentials) {
            var login = $http.post(SETTINGS.urlBackend+"/auth/login", sanitizeCredentials(credentials));
            login.success(cacheSession);
            login.success(loginSuccess);
            login.error(loginError);
            return login;
        },
        logout: function() {
            var logout = $http.get(SETTINGS.urlBackend+"/auth/logout");
            logout.success(uncacheSession);
            logout.success(logoutSuccess);
            logout.error(loginError);
            return logout;
        },
        isLoggedIn: function() {
            var checked = $http.get(SETTINGS.urlBackend+"/auth/check");
            return (checked && SessionService.get('authenticated'));
        }
    };
}]);

解决方案

Try setting mangle: false in the Uglify configuration in your Gruntfile.js:

grunt.initConfig({
  // ...
  uglify: {
    options: {
      mangle: false
    }
  }
});

I've had this happen when using certain packages from Bower. I believe some of the Angular UI suite of tools weren't compatible, for some reason.

这篇关于在.RUN功能AngularJS注入服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆