Angular - "没有导出的成员'Observable'"

Tho*_*Lee 138 rxjs typescript angular angular6 rxjs6

码

错误信息

打字稿代码:

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs/observable/of';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';

@Injectable({
  providedIn: 'root'
})
export class HeroService {

  constructor() { }

  getHeroes(): Observable<Hero[]> {
    return of(HEROES);
  }

}
Run Code Online (Sandbox Code Playgroud)

错误信息:

错误TS2307:找不到模块'rxjs-compat/Observable'.node_modules/rxjs/observable/of.d.ts(1,15):错误TS2307:找不到模块'rxjs-compat/observable/of'.src/app/hero.service.ts(2,10):错误TS2305:模块'"F:/ angular-tour-of-heroes/node_modules/rxjs/Observable"'没有导出成员'Observable'.src/app/hero.service.ts(15,12):错误TS2304:找不到名称'of'.

package.json Angular版本的文件:

版

San*_*mar 182

这可能对Angular 6有所帮助, 有关更多信息,请参阅本文档

  1. rxjs:创建方法,类型,调度程序和实用程序
import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';
  1. rxjs /运算符:所有可管道运算符:
import { map, filter, scan } from 'rxjs/operators';
  1. rxjs/webSocket: Web套接字主题实现
import { webSocket } from 'rxjs/webSocket';
  1. rxjs/ajax:Rx ajax实现
import { ajax } from 'rxjs/ajax';
  1. rxjs/testing:测试实用程序
import { TestScheduler } from 'rxjs/testing';

  • npm install rxjs-compat --save (7认同)
  • 你怎么能这样做呢?从第一手?搜索SO工作,但如果库不太好用. (4认同)

小智 95

显然(正如您在错误日志中指出的那样),在更新到Angular 6.0.0之后,缺少rxjs-compat.

运行npm install rxjs-compat --save安装.应该解决它.

  • 我也面临同样的问题,但如果我不想使用向后兼容包呢? (3认同)
  • 如果我们不想使用 rxjs-compat 怎么办? (2认同)
  • 这应该是正确的答案。这不是前进的正确答案……但绝对是“现在”的答案。 (2认同)

小智 81

刚刚放:

import { Observable} from 'rxjs';

就像那样.没有更多或更少.

  • 使用'rxjs'而不是'rxjs/Observable'解决了我的问题.我想,问题的主人应该接受你的答案. (6认同)

Tho*_*Lee 53

我用原来的代码替换了import { Observable, of } from 'rxjs',问题解决了.

在此输入图像描述

在此输入图像描述


veb*_*ben 27

您正在使用RxJS 6.只需更换

import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs/observable/of';
Run Code Online (Sandbox Code Playgroud)

通过

import { Observable, of } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)


小智 9

尝试这个:

npm install rxjs-compat --save
Run Code Online (Sandbox Code Playgroud)


Jac*_*kie 7

帮助我的是:

  1. 摆脱所有旧的导入路径,并用新的替换它们:

    import { Observable , BehaviorSubject } from 'rxjs';)

  2. 删除node_modules文件夹

  3. npm cache verify
  4. npm install


Mat*_*ith 6

我有一个类似的问题。将RXJS从6.x反向更新到最新的5.x版本已将其修复为Angular5.2.x。

打开package.json。

更改"rxjs": "^6.0.0","rxjs": "^5.5.10",

npm update