在.RUN功能AngularJS注入服务 [英] AngularJS Inject service in .run function
问题描述
在我的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屋!