Неизвестный провайдер: ngStorageProvider ‹- ngStorage при попытке использовать Angular ngStorage

У меня есть этот код ниже, который использует ngStorage. но когда я пытаюсь запустить это часть моего углового приложения, я получаю эту ошибку на консоли:

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);
            });
        }

    }]);

здесь мой код выдает ошибку undefined localstorage:

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
..........

}

person Matoy    schedule 05.11.2016    source источник


Ответы (1)


Вам нужно установить ngStorage и добавить его в свой проект. Он не является частью углового ядра.

Если он у вас уже установлен, ошибка может быть вызвана тем, что вы забыли добавить скрипт в свой проект.

Вот официальная документация: https://github.com/gsklee/ngStorage

Вот пример: Как использовать ngStorage в angularjs

ОБНОВЛЕНИЕ:

Я вижу, что в контроллере signupController вы вводите ngStorage (в строковой части), когда инъекция должна быть $localStorage или $sessionStorage. Это вызывает проблему, потому что ngStorage — это модуль, а не провайдер.

ОБНОВЛЕНИЕ 2:

Когда вы объявляете mainController, вторым параметром являются модули, от которых зависит ваш контроллер, здесь вы забыли добавить строку для jwtHelper непосредственно перед строкой для $localStorage. Таким образом, в вашей функции на одну строку меньше переменных.

person fiso    schedule 05.11.2016
comment
не уверен, что это проблема. Я сделал npm install ngstorage --save и добавил скрипт cdn src в свой index.html. - person Matoy; 05.11.2016
comment
Не используйте cdn, если он у вас установлен, просто используйте локальный путь к файлу. - person fiso; 05.11.2016
comment
@Matoy, проверь мое обновление, я думаю, что есть ответ. - person fiso; 05.11.2016
comment
Спасибо. Я сделал это, и сообщение об ошибке исчезло, но теперь локальное хранилище не определено. (обновить мой вопрос) - person Matoy; 05.11.2016
comment
Что не определено, $localStorage или $localStorage.jwt? - person fiso; 05.11.2016
comment
$localStorage, поэтому я получаю: TypeError: Невозможно прочитать свойство 'jwt' неопределенного - person Matoy; 05.11.2016
comment
Я использую $localStorage на другом контроллере. там я попытался прочитать значение $localStorage.jwt (после того, как я установил его в контроллере входа). там я получаю эту ошибку, говорящую, что $localStorage не определено. однако, даже если задание прошло успешно, $localStorage не должно быть неопределенным. - person Matoy; 05.11.2016
comment
Можете ли вы показать код, где $localStorage не определен? - person fiso; 05.11.2016
comment
это решило это. большое спасибо .. и последнее - можете ли вы объяснить мне, почему количество модулей (квадратные скобки) должно перекрывать количество строк в параметрах функции? - person Matoy; 05.11.2016