Угловой 7 Наблюдаемый: main.73926b0c96716431d554.js: 1 Ошибка ОШИБКИ: Uncaught (в обещании): ReferenceError: rxjsSubscription не определен - PullRequest
0 голосов
/ 27 марта 2019

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, ЧТО ОШИБКА ТОЛЬКО ПРОИСХОДИТ, КОГДА Я СОЗДАЛ ПРИЛОЖЕНИЕ И ЗАПУСКАЛ ЕГО ОТ СЕРВЕРА. Это работает отлично, если я бегу по местному.

Я использую следующую библиотеку:

"dependencies": {
"@angular/animations": "~7.2.5",
"@angular/common": "~7.2.5",
"@angular/compiler": "~7.2.5",
"@angular/core": "~7.2.5",
"@angular/forms": "~7.2.5",
"@angular/http": "~7.2.5",
"@angular/platform-browser": "~7.2.5",
"@angular/platform-browser-dynamic": "~7.2.5",
"@angular/router": "~7.2.5",
"@ngrx/effects": "^6.0.1",
"@ngrx/store": "^6.0.1",
"ace-builds": "^1.3.3",
"admin-lte": "^2.4.8",
"angular2-draggable": "^2.0.0-beta.2",
"autobahn": "^18.3.2",
"bootstrap": "^3.3.7",
"bootstrap-colorpicker": "^2.5.2",
"core-js": "^2.6.5",
"datatables.net": "^1.10.19",
"datatables.net-bs": "^1.10.19",
"datatables.net-fixedcolumns": "^3.2.6",
"datatables.net-fixedcolumns-bs": "^3.2.6",
"datatables.net-fixedheader": "^3.1.5",
"datatables.net-fixedheader-bs": "^3.1.5",
"datatables.net-select": "^1.2.7",
"datatables.net-select-bs": "^1.2.7",
"font-awesome": "^4.7.0",
"jquery": "^3.3.1",
"jquery-slimscroll": "^1.3.8",
"msgpack-lite": "^0.1.26",
"ng2-dragula": "^2.0.1",
"ngrx-store-localstorage": "^5.0.0",
"ngrx-store-logger": "^0.2.2",
"plotly.js": "^1.39.3",
"primeicons": "^1.0.0-beta.9",
"primeng": "^6.0.0",
"reselect": "^3.0.1",
"rxjs": "5.6.0-forward-compat.5",
"select2": "^4.0.6-rc.1",
"three": "^0.101.1",
"three-orbit-controls": "^82.1.0",
"three-ply-loader": "^1.0.0",
"three-stl-loader": "^1.0.6",
"zone.js": "^0.8.29"


},
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.6.8",
    "@angular/cli": "~7.3.1",
    "@angular/compiler-cli": "~7.2.5",
    "@angular/language-service": "~7.2.5",
    "@types/autobahn": "^0.9.39",
    "@types/jasmine": "^2.8.16",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^10.12.26",
    "codelyzer": "~4.5.0",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~3.1.4",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^2.0.1",
    "karma-jasmine": "^1.1.2",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "^5.4.2",
    "rxjs-tslint": "^0.1.5",
    "ts-node": "~7.0.0",
    "tslint": "~5.11.0",
    "typescript": "~3.2.4"
  }

и следующий код в одном из моих компонентов:

import { Observable, Subscription as rxjsSubscription, combineLatest, 
merge } from 'rxjs';

@Component({
    templateUrl: './file-exchange.component.html',
    styleUrls: ['./file-exchange.component.scss']
})
export class FileExchangeComponent implements OnInit, OnDestroy {

...

rxjsSubscriptions: rxjsSubscription = new rxjsSubscription();

...

ngOnInit(): void {

// Storage space subscription
    this.rxjsSubscriptions.add(
        this.store.select(root.fileXSpace)
            .subscribe((space: { bytesAllowed: number, bytesUsed: number }) => {
                this.bytesAllowed = space.bytesAllowed;
                this.bytesUsed = space.bytesUsed;
                // Careful not to do division by zero
                this.bytesPercentage = space.bytesAllowed > 0 ? 100 * space.bytesUsed / space.bytesAllowed : 0;
            })
    );

он работает с Angular 6, но больше не работает, так как я обновился до Angular 7, получая следующую ошибку:

main.73926b0c96716431d554.js: 1 Ошибка ОШИБКИ: Uncaught (в обещании): ReferenceError: rxjsSubscription не определено ReferenceError: rxjsSubscription не определено в новом ЦС (main.73926b0c96716431d554.js: 1) на wv (main.73926b0c96716431d554.js: 1) на bv (main.73926b0c96716431d554.js: 1) в СП (main.73926b0c96716431d554.js: 1) на Yv (main.73926b0c96716431d554.js: 1) в Wy (main.73926b0c96716431d554.js: 1) в Object.my [as createRootView] (main.73926b0c96716431d554.js: 1) в Hg.create (main.73926b0c96716431d554.js: 1) в ws.create (main.73926b0c96716431d554.js: 1) в qg.createComponent (main.73926b0c96716431d554.js: 1) в j (polyfills.57411ef973d8af233f6e.js: 1) в j (polyfills.57411ef973d8af233f6e.js: 1) в polyfills.57411ef973d8af233f6e.js: 1 в e.invokeTask (polyfills.57411ef973d8af233f6e.js: 1) в Object.onInvokeTask (main.73926b0c96716431d554.js: 1) в e.invokeTask (polyfills.57411ef973d8af233f6e.js: 1) в t.runTask (polyfills.57411ef973d8af233f6e.js: 1) в точке y (polyfills.57411ef973d8af233f6e.js: 1) at t.invokeTask [as invoke] (polyfills.57411ef973d8af233f6e.js: 1) в _ (polyfills.57411ef973d8af233f6e.js: 1)

Я попытался изменить версию библиотеки "rxjs": "5.6.0-forward-compat.5", как предлагалось в некоторых сообщениях (5, 6.2.1., 6.4 и многие другие, но только ошибка не уходит.

Извините за повторение, но я хочу убедиться, что следующее сообщение попадает:

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, ЧТО ОШИБКА ТОЛЬКО ПРОИСХОДИТ, КОГДА Я СОЗДАЮ ПРИЛОЖЕНИЕ И ЗАПУСКАЛ ЕГО ОТ СЕРВЕРА. Это работает отлично, если я бегу по локальной.

1 Ответ

1 голос
/ 27 марта 2019

Попробуйте использовать этот код:

import { Observable, Subscription, combineLatest, merge } from 'rxjs';

rxjsSubscriptions: Subscription[] = [];

this.rxjsSubscriptions.push(
    //
);

ngOnDestroy() {
   this.rxjsSubscriptions.forEach(sub => sub.unsubscribe());
}
...