Ошибка типа: this.router.events.filter не является ошибкой функции при загрузке приложения angular в корзину Aws s3

#angular #typescript #amazon-s3 #angular7

#angular #typescript #amazon-s3 #angular7

Вопрос:

У меня есть приложение angular7, которое работает в локальной среде точно без ошибок. Затем я загрузил сборку (с помощью ng build команды) приложения angular Aws S3 , которая также работает нормально. Но когда я загружаю производственную сборку (с помощью command ng build --prod --aot ) в Aws S3 so, она выдает ошибку, подобную этой

 TypeError: this.router.events.filter is not a function
  

Я искал это this.router.events.filter во всем своем проекте, закомментировал эту часть и снова запустил приложение на локальном компьютере, чтобы оно работало нормально, но когда я снова загрузил производственную сборку этого приложения, оно все еще показывает ту же ошибку. Как я могу это исправить?

Вот мои зависимости от проекта angular.

 "dependencies": {
"@agm/core": "^1.0.0-beta.5",
"@amcharts/amcharts4": "^4.0.14",
"@angular/animations": "^7.2.9",
"@angular/cdk": "^7.3.4",
"@angular/common": "^7.1.4",
"@angular/compiler": "^7.1.4",
"@angular/core": "^7.1.4",
"@angular/forms": "^7.1.4",
"@angular/http": "^7.1.4",
"@angular/platform-browser": "^7.1.4",
"@angular/platform-browser-dynamic": "^7.1.4",
"@angular/router": "^7.1.4",
"@nebular/auth": "^3.4.0",
"@nebular/security": "^3.4.0",
"@nebular/theme": "^3.4.0",
"@ng-bootstrap/ng-bootstrap": "^4.0.1",
"@swimlane/ngx-datatable": "^14.0.0",
"@syncfusion/ej2-angular-calendars": "^16.4.52",
"@types/highcharts": "^5.0.36",
"angular2-highcharts": "^0.5.5",
"angular2-notifications": "^2.0.0",
"bootstrap": "^4.2.1",
"c3": "^0.6.12",
"canvas-gauges": "^2.1.5",
"cli-update": "^3.2.5",
"core-js": "^2.6.1",
"css-animator": "^2.3.1",
"d3": "^5.7.0",
"eva-icons": "^1.1.1",
"famfamfam-flags": "^1.0.0",
"feather-icons-sass": "^1.0.0",
"font-awesome-scss": "^1.0.0",
"hammerjs": "^2.0.8",
"jquery": "^3.3.1",
"moment": "^2.24.0",
"ng-click-outside": "^4.0.0",
"ng-recaptcha": "^4.2.1",
"ng-select": "^1.0.1",
"ng-socket-io": "^0.2.4",
"ng2-file-upload": "^1.3.0",
"ng2-google-charts": "^3.5.0",
"ng2-odometer": "^1.1.3",
"ng2-toasty": "^4.0.3",
"ng2-ui-switch": "^1.0.2",
"ng2-validation": "^4.2.0",
"ng4-loading-spinner": "^1.2.3",
"ngx-bar-rating": "^1.1.0",
"ngx-captcha": "^6.3.0",
"ngx-carousel": "^1.3.5",
"ngx-chips": "^2.0.0-beta.0",
"ngx-color-picker": "^7.2.2",
"ngx-datatable": "^1.0.3",
"ngx-loading": "^2.0.1",
"ngx-pagination": "^3.2.1",
"ngx-perfect-scrollbar": "^7.1.0",
"node-rtsp-stream": "0.0.5",
"node-rtsp-stream-es6": "^1.0.6",
"node-sass": "^4.11.0",
"nodegit": "^0.24.1",
"npm-check-updates": "^2.15.0",
"rxjs": "^6.3.3",
"rxjs-compat": "^6.3.3",
"save": "^2.3.3",
"save-dev": "^2.0.0",
"screenfull": "^4.0.0",
"streamedian": "git://github.com/Streamedian/html5_rtsp_player.git",
"sweetalert2": "^7.33.1",
"tslib": "^1.9.0",
"zone.js": "^0.8.26"
  

}

Ответ №1:

events Свойство Router имеет тип Observable<Event> , поэтому, если вы хотите отфильтровать эти события маршрутизатора, вам нужно использовать filter оператор из rxjs/operators , например:

 import { NavigationEnd } from '@angular/router';
import { filter, tap } from 'rxjs/operators';

// ...

this.router.events.pipe(
  filter(event => event instanceof NavigationEnd),
  tap(event => {
    // ... whatever to do with the NavigationEnd event
  })
);
  

Если вы не использовали его самостоятельно в своем проекте, возможно, сторонняя библиотека использует старую версию router.events.filter .

Комментарии:

1. Если вы внимательно прочитали мой пост, я искал this.router.events.filter это во всем моем проекте angular и прокомментировал эту часть, и мой проект работает нормально на локальном компьютере, но выдает ошибку в Aws S3

2. И this.router имеет тип Router ? Потому что, если это так, возможно, ваш локальный проект мог получить какую-то более старую версию rxjs , на которой filter была доступна Observable .

3. this.router используется во многих местах, но в тех местах, которые я использовал this.router.navigate , или this.router.navigateByUrl в методах. В моем проекте нет строки кода с этим this.router.events.filter

4. Ах, черт возьми, это совершенно неверно истолковано. Не могли бы вы перечислить свои зависимости?

5. зависимости от package.json?