Javascript 错误:未知提供程序:SessionProvider<;-会话AngularJS
我知道这个问题标题中的错误基本上是因为在我的控制器中,我正在控制器中注入一个尚未定义的会话服务。我目前正在研究:为此,我在一个使用rails的应用程序中推出了它,但它将angular和rails分开。我在角度侧的设置如下所示: main.jsJavascript 错误:未知提供程序:SessionProvider<;-会话AngularJS,javascript,angularjs,devise,Javascript,Angularjs,Devise,我知道这个问题标题中的错误基本上是因为在我的控制器中,我正在控制器中注入一个尚未定义的会话服务。我目前正在研究:为此,我在一个使用rails的应用程序中推出了它,但它将angular和rails分开。我在角度侧的设置如下所示: main.js angular.module('App.controllers', []); angular.module('App.config', []); angular.module('App.directives', []) angular.module('Ap
angular.module('App.controllers', []);
angular.module('App.config', []);
angular.module('App.directives', [])
angular.module('App.resources', ['ngResource']);
angular.module('App.services', []);
var App = angular.module("App", [
"ngResource",
"ngCookies",
"$strap.directives",
"App.services",
"App.directives",
"App.resources",
"App.controllers",
"TotemApp.config"
], function ($routeProvider, $locationProvider, $httpProvider) {
var interceptor = ['$rootScope', '$q', function (scope, $q) {
function success(response) {
return response;
}
function error(response) {
var status = response.status;
if (status == 401) {
window.location = "/login";
return;
}
return $q.reject(response);
}
return function (promise) {
return promise.then(success, error);
}
}];
});
App.service('Session',[ '$cookieStore', 'UserSession', 'UserRegistration', function($cookieStore, UserSession, UserRegistration) {
this.currentUser = function() {
return $cookieStore.get('_angular_devise_user');
}
this.signedIn = function() {
return !!this.currentUser();
}
this.signedOut = function() {
return !this.signedIn();
}
this.userSession = new UserSession( { email:"sample@email.com", password:"password", remember_me:true } );
this.userRegistration = new UserRegistration( { email:"sample@email.com", password:"password", password_confirmation:"password" } );
}]);
Session.js
angular.module('App.controllers', []);
angular.module('App.config', []);
angular.module('App.directives', [])
angular.module('App.resources', ['ngResource']);
angular.module('App.services', []);
var App = angular.module("App", [
"ngResource",
"ngCookies",
"$strap.directives",
"App.services",
"App.directives",
"App.resources",
"App.controllers",
"TotemApp.config"
], function ($routeProvider, $locationProvider, $httpProvider) {
var interceptor = ['$rootScope', '$q', function (scope, $q) {
function success(response) {
return response;
}
function error(response) {
var status = response.status;
if (status == 401) {
window.location = "/login";
return;
}
return $q.reject(response);
}
return function (promise) {
return promise.then(success, error);
}
}];
});
App.service('Session',[ '$cookieStore', 'UserSession', 'UserRegistration', function($cookieStore, UserSession, UserRegistration) {
this.currentUser = function() {
return $cookieStore.get('_angular_devise_user');
}
this.signedIn = function() {
return !!this.currentUser();
}
this.signedOut = function() {
return !this.signedIn();
}
this.userSession = new UserSession( { email:"sample@email.com", password:"password", remember_me:true } );
this.userRegistration = new UserRegistration( { email:"sample@email.com", password:"password", password_confirmation:"password" } );
}]);
会话\u控制器
App.controller('SessionsController', ['$scope', '$location', '$cookieStore', 'Session', function($scope, $location, $cookieStore, Session) {
$scope.session = Session.userSession;
$scope.create = function() {
if ( Session.signedOut ) {
$scope.session.$save().success(function(data, status, headers, config) {
$cookieStore.put('_angular_devise_user', Session.userSession.email);
$location.path('/todos');
});
}
};
$scope.destroy = function() {
$cookieStore.remove('_angular_devise_user');
$scope.session.$destroy();
};
}]);
routes.js
angular.module('App.controllers', []);
angular.module('App.config', []);
angular.module('App.directives', [])
angular.module('App.resources', ['ngResource']);
angular.module('App.services', []);
var App = angular.module("App", [
"ngResource",
"ngCookies",
"$strap.directives",
"App.services",
"App.directives",
"App.resources",
"App.controllers",
"TotemApp.config"
], function ($routeProvider, $locationProvider, $httpProvider) {
var interceptor = ['$rootScope', '$q', function (scope, $q) {
function success(response) {
return response;
}
function error(response) {
var status = response.status;
if (status == 401) {
window.location = "/login";
return;
}
return $q.reject(response);
}
return function (promise) {
return promise.then(success, error);
}
}];
});
App.service('Session',[ '$cookieStore', 'UserSession', 'UserRegistration', function($cookieStore, UserSession, UserRegistration) {
this.currentUser = function() {
return $cookieStore.get('_angular_devise_user');
}
this.signedIn = function() {
return !!this.currentUser();
}
this.signedOut = function() {
return !this.signedIn();
}
this.userSession = new UserSession( { email:"sample@email.com", password:"password", remember_me:true } );
this.userRegistration = new UserRegistration( { email:"sample@email.com", password:"password", password_confirmation:"password" } );
}]);
"严格使用",
App.config(function($routeProvider, $httpProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main/home.html',
controller: 'MainCtrl'
})
.when('/login', {
templateUrl: 'views/sessions/new.html',
controller: 'SessionsController'
})
.when('/sign_up', {
templateUrl: 'views/registrations/new.html',
controller: 'RegistrationsController'
})
.otherwise({
redirectTo: '/'
});
});
当我尝试访问登录页面或注册页面时,会发生此错误。如果有人能透露一些信息,我们将不胜感激。不完全确定如何解决此
错误:未知提供程序:$SessionProvider乍一看,这看起来是正确的。我只能假设您可能没有在index.html文件中包含Session.js
Angular显然不知道什么是“会话”服务,所以这里出现了一些问题,要么文件没有加载,要么加载不正确,要么就我所能看到的那样
编辑:当您在其他javascript或typescript文件中出现语法错误时,错误是否会显示“SessionProvider。您将得到相同的错误。请确保没有语法错误。这是console窗口中的输出:我也同意您的第一个评论,可能没有包括它。事实上,我在这里看到了一个类似的帖子:它暗示了同样的事情。我确实试过了,但没有看。因此,在我的应用程序中的某个地方,我将其命名为$Session,而不是Session
。此外,我不知道这本身是否不正确,但您的app.js似乎缺少.config()。在module()调用中有一系列依赖项,然后直接转到模块调用中的函数。据我所知,您需要结束module()并执行.config()调用,并在其中包含函数(或.run)。但也许这是一个我不知道的速记。好的,解决了这个问题,现在有一个循环依赖问题。X_XSorry,本应调用main.js