wake-up-neo.net

rxjs/Subscription hat kein exportiertes Mitglied 'Subscription'

Ich habe mein Winkelprojekt und alle meine Abhängigkeiten auf die neueste Version aktualisiert. Ohne große Schwierigkeiten habe ich die meisten Abhängigkeiten gelöst, aber ich bin immer noch bei RxJs. Hier ist meine package.json: 

  "dependencies": {
    "@angular-devkit/build-angular": "^0.6.0",
    "@angular/animations": "^6.0.0",
    "@angular/common": "^6.0.0",
    "@angular/compiler": "^6.0.0",
    "@angular/core": "^6.0.0",
    "@angular/forms": "^6.0.0",
    "@angular/http": "^6.0.0",
    "@angular/platform-browser": "^6.0.0",
    "@angular/platform-browser-dynamic": "^6.0.0",
    "@angular/router": "^6.0.0",
    "angular-bootstrap-md": "^6.0.1",
    "core-js": "^2.5.5",
    "font-awesome": "^4.7.0",
    "rxjs": "^6.1.0",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular/cli": "~6.0.0",
    "@angular/compiler-cli": "^6.0.0",
    "@angular/language-service": "6.0.0",
    "@types/jasmine": "~2.8.3",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~6.0.60",
    "codelyzer": "^4.0.1",
    "electron": "^1.8.3",
    "jasmine-core": "~2.8.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~2.0.2",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^1.4.2",
    "karma-jasmine": "~1.1.2",
    "karma-jasmine-html-reporter": "^1.0.0",
    "protractor": "~5.3.1",
    "ts-node": "~6.0.2",
    "tslint": "~5.10.0",
    "TypeScript": "~2.7.2"

Ich importiere nur von RxJs zu Modulen: 

import { fromPromise } from 'rxjs/observable/fromPromise';
import { Subscription } from 'rxjs/Subscription';

Sie geben beide den gleichen Fehler:

    [ts] Module '"***/node_modules/rxjs/Subscription"' has no exported
 member 'Subscription'.

Es ist genau dasselbe für fromPromise. Hier ist die Fehlermeldung, die ich von Subscribtion.d.ts bekomme (ich habe den Code in keiner Weise geändert)

 enter image description here

AKTUALISIEREN:

Die Antworten unten haben das Problem mit dem Abonnement gelöst, aber fromPromise gibt immer noch das gleiche Problem an, obwohl es korrekt exportiert wurde: 

export * from 'rxjs-compat/observable/fromPromise';

 enter image description here

17
Øystein Seel

Mit RxJS 6 gibt es viele bahnbrechende Änderungen. Zum Beispiel Prototyp-Methoden als 

myObservable.map(data => data * 2)

funktioniert nicht mehr und muss durch ersetzt werden 

myObservable.pipe(map(data => data * 2))

Alle Details finden Sie hier: https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md


Bis Sie alle grundlegenden Änderungen behoben haben, können Sie Ihren alten Code mit rxjs-compat ( https://github.com/ReactiveX/rxjs/tree/master/compat ) wieder in Betrieb setzen.

Dieses Paket ist für die Abwärtskompatibilität mit RxJS .__ erforderlich. vor Version 6. Es enthält die Importe zum Hinzufügen von Operatoren zu Observable.prototype und Erstellungsmethoden für Observable.

Geben Sie Folgendes ein, um es zu installieren:

npm install -s rxjs-compat
27
Alexandre Annic

Sie können es damit beheben:

importiere { from } von 'rxjs'; 

Und statt: Return Observable.fromPromise (neues Versprechen ((beheben, ablehnen)) => {

Jetzt mach einfach: 

return from (neues Versprechen ((beheben, ablehnen)) => {

Gleiches gilt für Observable.of

1
IvanS

Ich hoffe, Ihr Problem löst sich mit der folgenden Anweisung import Subscription from 'rxjs'

0
revan

afaik Angular 6 und rxjs 6 sind nicht bereits kompatibel. Für die von ihnen erstellte Kompatibilität https://www.npmjs.com/package/rxjs-compat müssen Sie installieren

[UPDATE] FromPromise ist jetzt "von" . Siehe hier: https://github.com/ReactiveX/rxjs/issues/3525

0
Kevin ALBRECHT