【问题标题】:Unknown provider: ngStorageProvider <- ngStorage when trying to use Angular ngStorage未知提供者:ngStorageProvider <- ngStorage 在尝试使用 Angular ngStorage 时
【发布时间】:2016-11-05 16:58:50
【问题描述】:

我在下面有这个使用 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
..........

}

【问题讨论】:

    标签: javascript angularjs ng-storage


    【解决方案1】:

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

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

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

    这里是一个例子:How to use ngStorage in angularjs

    更新

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

    更新 2

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

    【讨论】:

    • 不确定是不是这个问题。我做了 npm install ngstorage --save,并将 cdn 脚本 src 添加到我的 index.html
    • 如果安装了cdn,不要使用它,只需使用文件的本地路径即可。
    • @Matoy,查看我的更新,我认为有答案。
    • 谢谢。我做到了,错误消息消失了,但现在本地存储未定义。 (更新我的问题)
    • 什么是未定义的,$localStorage 还是 $localStorage.jwt?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2015-10-11
    • 2012-09-02
    • 2017-04-16
    相关资源
    最近更新 更多