Проблема минимизации для провайдера, написанного с использованием синтаксиса руководства по стилю Джона Папы

0

Я написал поставщика, используя руководство по стилю John Papa, даже если он не предоставляет никаких правил о провайдерах. Когда я добавляю свою службу в блок выполнения моего приложения, я получаю следующую ошибку:

Uncaught Error: [$injector:strictdi] auth is not using explicit annotation and cannot be invoked in strict mode

Блок запуска:

angular.module('app', ['rest-client'])
.run(runBlock);

runBlock.$inject = ['Restangular', '$http', 'auth'];

/* @ngInject */
function runBlock(Restangular, $http, auth) {
}

Мой провайдер:

(function () {
    'use strict';

    angular
        .module('rest-client')
        .provider('auth', authProvider);

    authProvider.$inject = [];

    /* @ngInject */
    function authProvider() {

        var config = {
            authBaseUrl: undefined
        };

        var serviceProvider = {
            setAuthBaseUrl: setAuthBaseUrl,
            $get: $get
        };

        return serviceProvider;

        function setAuthBaseUrl(authBaseUrl) {
            config.authBaseUrl = authBaseUrl;
        };

        $get.$inject = ['localStorageService', 'Restangular', '$q', '$http'];

        /* @ngInject */
        function $get(localStorageService, Restangular, $q, $http) {
            return authService(localStorageService, Restangular, $q, $http);
        };

        authService.$inject = ['localStorageService', 'Restangular', '$q', '$http'];
        /* @ngInject */
        function authService(localStorageService, Restangular, $q, $http) {

            var service = {
                getAccessToken: getAccessToken,
                setAccessToken: setAccessToken,
                getRefreshToken: getRefreshToken,
                setRefreshToken: setRefreshToken,
                deleteTokens: deleteTokens,
                logout: logout,
                refreshToken: refreshToken
            };

            return service;

            ////////////////

            function getAccessToken() {
                var token = localStorageService.get('access-token');
                return token;
            }

            function setAccessToken(token) {
                localStorageService.set('access-token', token);
                Restangular.setDefaultHeaders({Authorization: 'Bearer ' + this.getAccessToken()});
            }

            function getRefreshToken() {
                var token = localStorageService.get('refresh-token');
                return token;
            }

            function setRefreshToken(token) {
                localStorageService.set('refresh-token', token);
            }

            function deleteTokens() {
                localStorageService.remove('access-token');
                localStorageService.remove('refresh-token');
            }

            function logout() {
                localStorageService.clearAll();
                Restangular.setDefaultHeaders({Authorization: 'Bearer ' + this.getAccessToken()});
            }

            function refreshToken() {
                var deferred = $q.defer();
                $http.get(config.authBaseUrl + '/auth/refresh/' + this.getRefreshToken()).then(function (result) {
                    var accessToken = result.data.accessToken;
                    this.setAccessToken(accessToken);
                    deferred.resolve(accessToken);
                });
                return deferred.promise;
            }

        }

    }
})();
Теги:

1 ответ

0
Лучший ответ
    return serviceProvider;

работает до

    $get.$inject = ['localStorageService', 'Restangular', '$q', '$http'];

а также

    authService.$inject = ['localStorageService', 'Restangular', '$q', '$http'];

Последнее необязательно, он не будет участвовать в DI.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню