Javascript 错误:未知提供程序:SessionProvider<;-会话AngularJS

Javascript 错误:未知提供程序: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

我知道这个问题标题中的错误基本上是因为在我的控制器中,我正在控制器中注入一个尚未定义的会话服务。我目前正在研究:为此,我在一个使用rails的应用程序中推出了它,但它将angular和rails分开。我在角度侧的设置如下所示:

main.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" } );
}]);
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