Миграция с Angular 12 на 13; теперь получаю «Невозможно установить статус свойства [объекта XMLHttpRequest], у которого есть только геттер»

Я унаследовал приложение и работаю над его миграцией на поддерживаемую версию. Все началось с Angular 5. Я двигался шаг за шагом, устраняя проблемы и следя за тем, чтобы приложение все еще работало, и добился успеха с Angular 5 по 12. Теперь я столкнулся с проблемой при переходе с Angular 12.0.5 на 13.0.4, которую не знаю, как решить. Я собираю приложение с помощью 'ng build', затем запускаю его. Мне предлагается ввести имя пользователя и пароль, что, по-видимому, является аутентификацией, но затем возникает ошибка "Невозможно задать состояние свойства [object XMLHttpRequest], которое имеет только геттер".

С помощью отладчика JavaScript WebStorm я нашел, где, по моему мнению, возникает проблема в классе Homeguard:

auth-guard.services.ts

Ошибка возникает в "this.authService.user.isLoaded$.then(() => {".

Я прошел по этапам сборки Angular 12 и 13. В сборке 13 this.authservice.user отображается как "undefined", хотя он отображается как объект в тесте "if" в предыдущей строке. В сборке 12 "this.authservice.user" отображается как объект в обеих строках. Я не понимаю, почему есть это разница.

Angular 12 package.json:

Angular 13 package.json:

tsconfig.json для 12 и 13:

Angular 12 "ng version":

Angular 13 "ng version":

Буду признателен за любую помощь. Это мой первый раз, когда я публикую вопрос, поэтому, пожалуйста, дайте мне знать, какая еще информация будет полезна.

import {Injectable} from '@angular/core';
import {CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';
import {AuthService} from "./auth.service";
import {Observable} from "rxjs";
import "rxjs/add/observable/of";
import "rxjs/add/operator/delay";
import "rxjs/add/operator/do";
import {globals} from "./globals";

@Injectable()
export class AuthGuard implements CanActivate {
    constructor(private authService: AuthService, private router: Router) {
    }

...
}

@Injectable()
export class HomeGuard implements CanActivate {

    constructor(private authService: AuthService, private router: Router) {
    }

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
        return new Promise((resolve, reject) => {
            if (this.authService.user && globals.accessToken) {
                this.authService.user.isLoaded$.then(() => {
                    if (this.authService.user.hasRole('researcher')) {
                        this.router.navigate(['/researcher/requests']);
                        resolve(false);
                    } else if (this.authService.user.hasRole('employee')) {
                        this.router.navigate(['/orders/manage']);
                        resolve(false);
                    } else {
                        this.router.navigate(['/pages/login']);
                        resolve(false);
                    }
                })
            } else {
                this.router.navigate(['/pages/login']);
                resolve(false);
            }
        });
    }
}
{
  "name": "coreui-angular",
  "version": "1.0.0-alpha.6",
  "description": "Open Source Bootstrap Admin Template",
  "author": "",
  "url": "http://coreui.io",
  "copyright": "Copyright 2017 creativeLabs Łukasz Holeczek",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular-devkit/schematics": "12.0.5",
    "@angular/animations": "12.0.5",
    "@angular/common": "12.0.5",
    "@angular/compiler": "12.0.5",
    "@angular/core": "12.0.5",
    "@angular/forms": "12.0.5",
    "@angular/platform-browser": "12.0.5",
    "@angular/platform-browser-dynamic": "12.0.5",
    "@angular/platform-server": "12.0.5",
    "@angular/router": "12.0.5",
    "@angular/upgrade": "12.0.5",
    "ampersand": "^3.0.6",
    "ampersand-rest-collection": "^6.0.0",
    "angular2-ladda": "3.2.0",
    "angular2-text-mask": "^9.0.0",
    "async": "^2.6.0",
    "browserslist": "^4.23.3",
    "chart.js": "2.6.0",
    "core-js": "2.5.0",
    "lodash": "^4.17.4",
    "moment": "^2.18.1",
    "ngx-bootstrap": "^6.0.0",
    "ngx-markdown": "12.1.0",
    "q": "^1.5.0",
    "rxjs": "^6.6.7",
    "rxjs-compat": "^6.6.7",
    "ts-helpers": "1.1.2",
    "tslib": "^2.0.0",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~12.0.5",
    "@angular/cli": "^12.0.5",
    "@angular/compiler-cli": "12.0.5",
    "@types/jasmine": "~3.6.0",
    "@types/node": "^12.11.1",
    "codelyzer": "^6.0.0",
    "jasmine-core": "~3.8.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~6.4.4",
    "karma-chrome-launcher": "~3.1.0",
    "karma-cli": "1.0.1",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "ladda": "2.0.1",
    "protractor": "~7.0.0",
    "sass": "1.33.0",
    "ts-node": "3.3.0",
    "tslint": "~6.1.0",
    "typescript": "^4.2.4"
  },
  "engines": {
    "node": ">= 6.9.0",
    "npm": ">= 3.0.0"
  }
}

{
  "name": "coreui-angular",
  "version": "1.0.0-alpha.6",
  "description": "Open Source Bootstrap Admin Template",
  "author": "",
  "url": "http://coreui.io",
  "copyright": "Copyright 2017 creativeLabs Łukasz Holeczek",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular-devkit/schematics": "^13.0.4",
    "@angular/animations": "13.0.3",
    "@angular/common": "13.0.3",
    "@angular/compiler": "13.0.3",
    "@angular/core": "13.0.3",
    "@angular/forms": "13.0.3",
    "@angular/platform-browser": "13.0.3",
    "@angular/platform-browser-dynamic": "13.0.3",
    "@angular/platform-server": "13.0.3",
    "@angular/router": "13.0.3",
    "@angular/upgrade": "13.0.3",
    "ampersand": "^3.0.6",
    "ampersand-rest-collection": "^6.0.0",
    "angular2-ladda": "^3.2.2",
    "angular2-text-mask": "^9.0.0",
    "async": "^2.6.0",
    "browserslist": "^4.23.3",
    "chart.js": "2.6.0",
    "core-js": "2.5.0",
    "lodash": "^4.17.4",
    "moment": "^2.18.1",
    "ngx-bootstrap": "^6.0.0",
    "ngx-markdown": "^13.1.0",
    "q": "^1.5.0",
    "rxjs": "^6.6.7",
    "rxjs-compat": "^6.6.7",
    "ts-helpers": "1.1.2",
    "tslib": "^2.0.0",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~13.0.4",
    "@angular/cli": "^13.0.4",
    "@angular/compiler-cli": "13.0.3",
    "@types/jasmine": "~3.6.0",
    "@types/node": "^12.11.1",
    "codelyzer": "^6.0.0",
    "jasmine-core": "~3.8.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~6.4.4",
    "karma-chrome-launcher": "~3.1.0",
    "karma-cli": "1.0.1",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "ladda": "^2.0.1",
    "protractor": "~7.0.0",
    "sass": "^1.33.0",
    "ts-node": "3.3.0",
    "tslint": "~6.1.0",
    "typescript": "~4.4.3"
  },
  "engines": {
    "node": ">= 6.9.0",
    "npm": ">= 3.0.0"
  }
}
{
  "compileOnSave": false,
  "compilerOptions": {
    "downlevelIteration": true,
    "importHelpers": true,
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2016",
      "dom"
    ],
    "module": "es2020",
  }
}
Angular CLI: 12.2.18
Node: 16.20.2 (Unsupported)
Package Manager: npm 8.19.4
OS: win32 x64

Angular: 12.0.5
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, platform-server
... router, upgrade

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1200.5
@angular-devkit/build-angular   12.0.5
@angular-devkit/core            12.0.5
@angular-devkit/schematics      12.0.5
@angular/cli                    12.2.18
@schematics/angular             12.2.18
rxjs                            6.6.7
typescript                      4.2.4
Angular CLI: 13.3.11
Node: 16.20.2
Package Manager: npm 8.19.4
OS: win32 x64

Angular: 13.0.3
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, platform-server
... router, upgrade

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1300.4
@angular-devkit/build-angular   13.0.4
@angular-devkit/core            13.0.4
@angular-devkit/schematics      13.3.11
@angular/cli                    13.3.11
@schematics/angular             13.3.11
rxjs                            6.6.7
typescript                      4.4.4
Прокофий
Вопрос задан15 марта 2024 г.

1 Ответ

2
Фока
Ответ получен16 сентября 2024 г.

Ваш ответ

Загрузить файл.