未知提供者:ngStorageProvider <- ngStorage 尝试使用时 Angular ngStorage

Unknown provider: ngStorageProvider <- ngStorage when trying to use Angular ngStorage

下面这段代码使用了 ngStorage。 但是当我尝试 运行 这是我的 angular 应用程序的一部分时,我在控制台收到此错误:

Error: [$injector:unpr] Unknown provider: ngStorageProvider <- ngStorage <- signupController

为什么?

登录controller.js

var smallTalkzModel = angular.module('smallTalkzModel', ['ui.router', 'luegg.directives', 'ngCookies', 'ngStorage', 'angular-jwt']);

smallTalkzModel.controller('signupController', ['$scope', '$location', '$http', 'userDetails','ngStorage',
    function ($scope, $location, $http, userDetails,$localStorage) {

        $scope.register_user = function (info) {
            $http({
                url: '/register_user',
                method: 'POST',
                data: info
            }).then(function (response) {
                $localStorage.jwt = response.data.id_token;
                $location.path('main');
            }, function (error) {
                alert(error.data);
            });
        }
    }]);

更新:

更改了代码以在控制器参数中包含 $localStorage。现在错误消息消失了,但是在我对它进行赋值后 $localStorage 是未定义的...

controller('signupController', ['$scope', '$location', '$http', 'userDetails', '$localStorage',
    function ($scope, $location, $http, userDetails, $localStorage) {

        $scope.login_info = "";
        $scope.userDetails = userDetails.isLogged;
        $scope.userLogin = false;
        $http.get('/online_users')
            .success(function (data) {
                $scope.usersNumber = data.length;
            })
            .error(function (data) {
                console.log('Error: ' + data);
            });

        $scope.register_user = function (info) {
            $http({
                url: '/register_user',
                method: 'POST',
                data: info
            }).then(function (response) {
                $localStorage.jwt = response.data.id_token;
                $location.path('main');
            }, function (error) {
                alert(error.data);
            });
        }

    }]);

这是我的代码抛出未定义本地存储错误的地方:

mainController.js

smallTalkzModel.controller('mainController', ['$scope', 'sessionInfo', '$location', '$http', 'userDetails','$localStorage',
    function ($scope, sessionInfo, $location, $http, userDetails, jwtHelper,$localStorage) {

        $scope.login_info = "";
        $scope.userLogin = userDetails.isLogged;

        var jwt = $localStorage.jwt; // here $localStorage is undefined
..........

}

您需要安装ngStorage,并将其添加到您的项目中。它不是 angular 核心的一部分。

如果您已经安装了,可能是因为您忘记在项目中添加脚本导致的。

这里是官方文档:https://github.com/gsklee/ngStorage

举个例子:

更新

我看到你在控制器 signupController 中注入了 ngStorage(在字符串部分),而注入应该是 $localStorage 或 $sessionStorage。这是导致问题的原因,因为 ngStorage 是一个模块,而不是提供程序。

更新 2:

当你声明 mainController 时,第二个参数是你的控制器所依赖的模块,在那里,你忘记在 $localStorage 的字符串之前添加 jwtHelper 的字符串。因此函数中的变量少了一个字符串。