0

我想用angular2,智威湯遜:https://github.com/auth0/angular2-jwtlocalStorage的是沒有定義的時候調用tokenNotExpired

當我嘗試調用函數tokenNotExpired我得到這個異常:

Exception: Call to Node module failed with error: ReferenceError: localStorage is not defined at 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> 

感謝

回答

2

我找到了解決辦法。問題是angular-universal在客戶端和服務器端執行代碼。並在服務器端'窗口'對象不存在。

到防止代碼從服務器側運行:

loggedIn() { 
     if (typeof window !== 'undefined') { 
      return tokenNotExpired(); 
     } 
} 
相關問題