获取错误:$ injector:AngularJs中的unpr未知提供程序

时间:2016-10-10 09:41:55

标签: javascript angularjs

我对AngularJs很新,有些事情我还不知道。实际上很多。

我的浏览器中出现此错误:

Unknown provider: URLsProvider <- URLs <- AuthenticationInterceptor <- $http <- $templateFactory <- $view <- $state

当我转到Angularjs帮助页面here时,我得到的解释是我错过了或在我的代码中错误地注入了。

我从互联网上获得了这个代码,它应该做的就是成为一个拦截器,每当我打电话时都会添加jwt令牌来请求标题。

以下是代码:

export default function(AuthenticationService, URLs) {
    let service = this;

    service.request = function(config) {
        let token = AuthenticationService.getToken();
        if(config.url.indexOf(URLs.API) === 0 && token) {
            config.headers.Authorization = "Bearer " + token;
        }

        return config;
    };
}

这是服务:

class AuthenticationService {
    constructor($window) {
        this.$window = $window;
        this.tokenKey = "examinoJwtToken";
    }

    saveToken(token) {
        this.$window.localStorage[this.tokenKey] = token;
    }

    getToken() {
        return this.$window.localStorage[this.tokenKey];
    }

    login(token) {
        this.saveToken(token);
    }

    logout() {
        this.$window.localStorage.removeItem(this.tokenKey);
    }

    parseJwt(token) {
        var base64Url = token.split(".")[1];
        var base64 = base64Url.replace("-", "+").replace("_", "/");
        return JSON.parse(this.$window.atob(base64));
    }

    isAuthenticated() {
        var token = this.getToken();
        if(token) {
            var params = this.parseJwt(token);
            return Math.round(new Date().getTime() / 1000) <= params.exp;
        } 
        else {
            return false;
        }
    }
}

在app.js中我添加了这个:

import AuthenticationService from "./shared/services/AuthenticationService";
import AuthenticationInterceptor from "./shared/interceptors/AuthenticationInterceptor";

导出默认的AuthenticationService; AuthenticationService是一种定义所有功能的服务。喜欢:getToken,saveToken,login等等。

我需要注入此服务吗?或者你可能看到其他一些问题?这是什么解决方案?我知道这可能是微不足道的事情,但我以前从未接触过AngularJs,所以我需要寻求帮助和额外的解释。

0 个答案:

没有答案