调用tokenNotExpired时未定义localStorage

时间:2017-01-14 11:00:49

标签: javascript angular local-storage angular-universal angular2-jwt

我想在我的项目中集成angular2-jwt:https://github.com/auth0/angular2-jwt

当我尝试调用函数tokenNotExpired时,我得到了这个异常:

  

异常:调用Node模块失败,错误:ReferenceError:   localStorage未在Object.tokenNotExpired

中定义

这是我的代码:

auth.service.ts

import { Injectable } from '@angular/core';
import { tokenNotExpired } from 'angular2-jwt';

@Injectable()
export class Auth {

    loggedIn() {
        return tokenNotExpired();
    }

}

app.component.ts

import { Component } from '@angular/core';
import { Auth } from '../.././services/auth.service';

@Component({
    selector: 'app',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})
export class AppComponent {
    constructor(private auth: Auth) { }
}

app.component.html

<div class='container-fluid'>
    <div class='row'>
        <div *ngIf="auth.loggedIn()" class='col-sm-3'>
            <nav-menu></nav-menu>
        </div>
        <div class='col-sm-9 body-content'>
            <router-outlet></router-outlet>
        </div>
    </div>
</div>

由于

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。问题是angular-universal执行客户端和服务器端的代码。在服务器端&#39;窗口&#39;对象不存在。

阻止代码在服务器端运行:

loggedIn() {
        if (typeof window !== 'undefined') {
            return tokenNotExpired();
        }
}