Angular - “没有导出的成员'Observable'”

时间:2018-04-15 08:49:31

标签: angular typescript rxjs angular6 rxjs6

code

error info

打字稿代码:

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);
  }

}

错误信息:

  

错误TS2307:找不到模块'rxjs-compat / Observable'。   node_modules / rxjs / observable / of.d.ts(1,15):错误TS2307:找不到   模块'rxjs-compat / observable / of'。 SRC /应用/ 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'。

带有Angular版本的

package.json文件:

version

15 个答案:

答案 0 :(得分:159)

这可能会对 Angular 6 有所帮助,有关详细信息,请参阅此Document

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

答案 1 :(得分:83)

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

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

答案 2 :(得分:59)

刚刚提出:

import { Observable} from 'rxjs';

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

答案 3 :(得分:46)

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

enter image description here

enter image description here

答案 4 :(得分:22)

您正在使用RxJS6。只需替换

import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs/observable/of';

作者

import { Observable, of } from 'rxjs';

答案 5 :(得分:6)

帮助我的是:

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

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

  2. 删除node_modules文件夹

  3. npm cache verify
  4. npm install

答案 6 :(得分:5)

我有类似的问题。将RXJS从6.x反向转换到最新的5.x版本,将其固定为Angular 5.2.x。

打开package.json。

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

运行npm update

答案 7 :(得分:2)

我的决议是添加以下导入: import { of } from 'rxjs/observable/of';

因此更改后的hero.service.ts的整体代码为:

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

@Injectable()
export class HeroService {

  constructor() { }

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

答案 8 :(得分:2)

Angular 6不支持angular-split组件,因此要使其与Angular 6安装兼容,请遵循应用程序中的依赖关系

要使其工作直至更新,请使用:

"dependencies": {
"angular-split": "1.0.0-rc.3",
"rxjs": "^6.2.2",
    "rxjs-compat": "^6.2.2",
}

答案 9 :(得分:2)

只需从/Observable中删除'rxjs/Observable';

如果随后您将Cannot find module 'rxjs-compat/Observable'放在行的下面到thr终端,然后按Enter。

npm install --save rxjs-compat

答案 10 :(得分:1)

尝试一下:

npm install rxjs-compat --save

答案 11 :(得分:0)

在我的情况下,发生此错误是因为我的计算机中装有ng cli的旧版本。

运行后问题已解决:

ng update

ng update @angular/cli

答案 12 :(得分:0)

更新内存中的角度网络API 版本。 英雄的角度旅行教程中安装的默认 angular-in-memory-web-api 版本为0.4。就我而言,它就像一种魅力。 (将Angular 7与RxJS 6结合使用)

npm i angular-in-memory-web-api@0.8.0

答案 13 :(得分:0)

您还没有安装rxjs库请安装

npm install rxjs-compat --save

答案 14 :(得分:-3)

使用return Observable.of(HEROES);