令牌未过期模块不起作用,Angular 6

时间:2018-10-08 10:05:34

标签: angular typescript jwt

import { tokenNotExpired } from 'angular2-jwt';

错误:

  

node_modules / angular2-jwt / angular2-jwt.d.ts(3,10)中的错误:错误TS2305:模块'“ C:/ Users / Charles Edwin Ison / OOP / node_modules / rxjs / Observable”没有导出的成员“可观察”。       node_modules / rxjs / Observable.d.ts(1,15):错误TS2307:找不到模块“ rxjs-compat / Observable”。

该如何解决?

3 个答案:

答案 0 :(得分:0)

我使用带有角度6的@ auth0 / angular-jwt解决了此问题。您首先需要完全卸载angular2-jwt:

npm uninstall angular2-jwt --save

然后您可以运行:

npm install @auth0/angular-jwt

只有这两个命令行对我有所帮助。

答案 1 :(得分:0)

如果您正在使用Angular 4.3或更高版本,则不支持旧版本的 angular2-jwt 。如果您使用的是旧版本,则由于它依赖于Angular的HttpClient的Http拦截器,因此会出现更多错误。您可以下载新版本 @ auth0 / angular-jwt 并为tokenNotExpired实现方法

# installation with npm
npm install @auth0/angular-jwt

您可以通过这种方式实现

export function tokenGetter(access_token : string) {
  return localStorage.getItem(access_token);
}

private tokenNotExpired(token : string)
{
  const item: string = tokenGetter(token);
  return item != null && !this.jwtHelper.isTokenExpired(item);
}

答案 2 :(得分:0)

npm uninstall angular2-jwt
npm install @auth0/angular-jwt
npm install rxjs-compat --save

在 auth.service.ts 中:

import { JwtHelperService } from "@auth0/angular-jwt";
 token: string

  isAuthenticated() {
return this.jwtHelper.isTokenExpired(this.token);

}

在 header.component.html 中:

 <a class="nav-link" [routerLink]="['/dashboard']" routerLinkActive="active-link"
       *ngIf="!authService.isAuthenticated()"
       [routerLinkActiveOptions]="{exact: true}">Dashboard</a>
    <a class="btn btn-outline-primary me-2"  *ngIf="authService.isAuthenticated()"
       [routerLink]="['/auth']" tabindex="-1" aria-disabled="true">Sign in</a>