AngularJS在.run函数中注入服务
在我的AngularJS应用程序中,使用Yeoman缩小我的应用程序时,我出现以下错误:AngularJS在.run函数中注入服务,angularjs,gruntjs,yeoman,Angularjs,Gruntjs,Yeoman,在我的AngularJS应用程序中,使用Yeoman缩小我的应用程序时,我出现以下错误: Uncaught Error: [$injector:unpr] Unknown provider: aProvider <- a <- $http <- AuthenticationService 我当然想到了缩小时的典型注入错误,但我很难看到我的代码中有什么错误 更新 我的认证服务: angular.module('myApp').factory("AuthenticationS
Uncaught Error: [$injector:unpr] Unknown provider: aProvider <- a <- $http <- AuthenticationService
我当然想到了缩小时的典型注入错误,但我很难看到我的代码中有什么错误
更新
我的认证服务:
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'));
}
};
}]);
我强烈推荐另一种手动设置角度缩小工作的方法,即在[]括号中包装“模块”-控制器、服务、工厂 使用吴敏!这本书是由那些有棱角的人写的,也就是布莱恩·福特。但最重要的是,它消除了编写角度模块时的这种复杂性,它们再次变得清晰易读,而ng min完成了修复缩小问题的艰苦工作 我知道这不是对你的问题的回答,但它可能是你所面临的问题的解决方案 //允许使用非minsafe AngularJS文件。自动使其//minsafe兼容,因此Uglify不会破坏ng引用
ngmin: {
dist: {
files: [
{
expand: true,
cwd: '.tmp/concat/scripts',
src: '*.js',
dest: '.tmp/concat/scripts'
}
]
}
},
尝试在
grunfile.js
中的丑陋配置中设置mangle:false
:
grunt.initConfig({
// ...
uglify: {
options: {
mangle: false
}
}
});
我在使用Bower的某些软件包时遇到过这种情况。我相信由于某些原因,Angular UI套件中的一些工具不兼容。您在AuthenticationService服务中遇到了错误您是否使“AuthenticationService”缩小安全?@Julien好吧,给run函数的数组不是使注射缩小安全的方法?@Nitish Kumar不,我没有,错误告诉我运行函数的AuthenticationService未知。这是一个已知问题。$http似乎使用了一个不安全的缩小组件。的确,正如你所说的,这并没有改变我的问题。不,但它可能会解决问题,因为它似乎是一些缩小问题-而不是手工做这个糟糕的咕噜工作更好-哦,snap-咕噜!最好在整个构建过程中使用grunt。。。即使阅读grunt ngmin文档,我也不知道该如何使用它。我是否只需要通过
npm install grunt ngmin--save dev
命令安装它,然后在我的Gruntfile中启用它?我应该什么时候使用grunt ngmin
命令?在安装和配置grunt ngmin后使用它因为听起来像是在使用耶曼角度生成器,所以已经安装和配置了grunt ngmin
。它将在每个版本上运行。事实上,已经没有错误了!这条指令究竟会破坏什么:false
指令?
grunt.initConfig({
// ...
uglify: {
options: {
mangle: false
}
}
});