【问题标题】:How to fix error TS2416: Property 'canActivate' in type 'KeycloakAuthGuard' is not assignable to the same property in base type 'CanActivate'?如何修复错误 TS2416:“KeycloakAuthGuard”类型中的属性“canActivate”不能分配给基类型“CanActivate”中的相同属性?
【发布时间】:2021-10-28 22:15:02
【问题描述】:

我对 Angular 项目非常陌生。在我克隆项目并尝试使用ng serve 启动项目后。

所以我收到类似的错误。

ERROR in node_modules/keycloak-angular/lib/core/services/keycloak-auth-guard.d.ts(10,5): error TS2416: Property 'canActivate' in type 'KeycloakAuthGuard' is not assignable to the same property in base type 'CanActivate'. 
  Type '(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Promise<boolean | UrlTree>' is not assignable to type '(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => boolean | Promise<boolean> | Obser...'.
    Type 'Promise<boolean | UrlTree>' is not assignable to type 'boolean | Promise<boolean> | Observable<boolean>'.
      Type 'Promise<boolean | UrlTree>' is not assignable to type 'Observable<boolean>'.
        Property '_isScalar' is missing in type 'Promise<boolean | UrlTree>'.

如果我导航到 keycloak-auth-guard.d.ts,代码就像,

import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs';
import { KeycloakService } from './keycloak.service';
export declare abstract class KeycloakAuthGuard implements CanActivate {
    protected router: Router;
    protected keycloakAngular: KeycloakService;
    protected authenticated: boolean;
    protected roles: string[];
    constructor(router: Router, keycloakAngular: KeycloakService);
    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree>;
    abstract isAccessAllowed(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree>;
}

这里有什么帮助吗?

谢谢, 大孙。

【问题讨论】:

    标签: angular angular6 keycloak canactivate


    【解决方案1】:

    考虑到您标记了angular6,我建议您通过KeyCloack 升级到最新支持的角度版本。正如here 所述,您可以并且可能应该升级到 Angular 12:

    【讨论】:

    • 我同意您的解决方案,但在我的情况下,不同功能分支中的依赖崩溃问题。我结帐到最新的分支,问题得到解决。
    猜你喜欢
    • 2018-08-25
    • 1970-01-01
    • 2021-12-12
    • 2023-02-13
    • 2021-06-22
    • 1970-01-01
    • 2019-09-09
    • 2020-08-23
    • 1970-01-01
    相关资源
    最近更新 更多