0

angular js、loopback、nodejs は初めてです。

angularアプリで認証を実装しているときに、以下のエラーが発生します

Uncaught Error: [$injector:unpr] Unknown provider: sessionInjectorProvider <- sessionInjector <- $http <- $compile

私はこの文書を調べていましたが、助けにはなりませんでした。 http://www.webdeveasy.com/interceptors-in-angularjs-and-useful-examples/

このエラーは、sessionInjector に以下の行を追加したときに発生しました

angular.module('myApp', []).factory('sessionInjectorProvider', ['SessionService', function(SessionService) {
    var sessionInjector = {
        request: function(config) {
            if (!SessionService.isAnonymus) {
                config.headers['x-session-token'] = SessionService.token;
            }
            return config;
        }
    };
    return sessionInjector;
}]);

angular.module('myApp', []).config(['$httpProvider', function($httpProvider) {
    $httpProvider.interceptors.push('sessionInjector');
}]);
4

1 に答える 1

0

コードには少なくとも 2 つのエラーがあります。

angular.module('myApp', [])モジュールを作成しますが、モジュールをangular.module('myApp')呼び出します。これは、コードの最後でモジュールを再度作成しているため、以前に記述したものが失われることを意味します。

このコードをフォーマットするにはさまざまな方法がありますが、問題を解決する方法は次のとおりです。

    angular.module('myApp', [])
        .factory('sessionInjectorProvider', ['SessionService', function(SessionService) {
            var sessionInjector = {
                request: function(config) {
                    if (!SessionService.isAnonymus) {
                config.headers['x-session-token'] = SessionService.token;
                    }
                    return config;
                }
            };
            return sessionInjector;
        }])
        .config(['$httpProvider', function($httpProvider) {
                    $httpProvider.interceptors.push('sessionInjectorProvider');
        }]);

また、既に述べたように、「sessionInjectorProvider」と「sessionInjector」を混在させています。インターセプターは、上に投稿したコードに示すように「sessionInjectorProvider」を使用する必要があります。

于 2015-04-09T12:34:19.140 に答える