Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rxjs/Subscription has no exported member 'Subscription'

I updated my angular project and all my dependencies to latest version. Without to much trouble I solved most of the dependency issues, but I'm still stuck on RxJS. Here is my 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"

I'm only importing two modules from RxJS:

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

They are both giving the same error:

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

It's exactly the same for fromPromise. Here is the error message I'm getting from Subscribtion.d.ts (I have not modified the code in any way)

enter image description here

UPDATE:

The answers bellow solved the issue with Subscription but fromPromise still gives the same issue even though it's exported correctly:

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

enter image description here

like image 671
Øystein Seel Avatar asked May 04 '18 13:05

Øystein Seel


2 Answers

There is a lot of breaking changes with RxJS 6. For example, prototype methods as

myObservable.map(data => data * 2)

won't work anymore and must be replaced by

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

All details can be found here: https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md


Until you have fixed all breaking changes, you can make your old code work again with rxjs-compat (https://github.com/ReactiveX/rxjs/tree/master/compat).

This package is required to get backwards compatibility with RxJS previous to version 6. It contains the imports to add operators to Observable.prototype and creation methods to Observable.

Type this to install it:

npm install -s rxjs-compat
like image 93
Alexandre Annic Avatar answered Nov 01 '22 10:11

Alexandre Annic


I hope your problem will resolve using this below statement import Subscription from 'rxjs'

like image 11
revan Avatar answered Nov 01 '22 10:11

revan