174

代码

错误信息

打字稿代码:

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/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 版本的文件:

版本

4

15 回答 15

220

这在Angular 6中可能会有所帮助 有关更多信息,请参阅此文档

  1. rxjs:创建方法、类型、调度程序和实用程序
import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';
  1. rxjs/operators:所有可管道操作符:
从 'rxjs/operators' 导入 { 映射、过滤、扫描 };
  1. rxjs/webSocket:网络套接字主题实现
从 'rxjs/webSocket' 导入 { webSocket };
  1. rxjs/ajax : Rx ajax 实现
从 'rxjs/ajax' 导入 { ajax };
  1. rxjs/testing : 测试工具
从'rxjs/testing'导入{TestScheduler};
于 2018-05-05T22:38:19.620 回答
130

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

运行npm install rxjs-compat --save安装。应该修复它。

于 2018-06-02T22:14:20.887 回答
119

只是说:

import { Observable} from 'rxjs';

就这样。没有更多或更少。

于 2018-05-26T22:06:38.750 回答
63

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

在此处输入图像描述

在此处输入图像描述

于 2018-04-15T09:31:16.247 回答
35

您正在使用 RxJS 6。只需替换

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

经过

import { Observable, of } from 'rxjs';
于 2018-08-12T09:56:54.760 回答
33

尝试这个:

npm install rxjs-compat --save
于 2019-04-17T05:08:19.577 回答
13

对我有帮助的是:

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

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

  2. 删除node_modules文件夹

  3. npm cache verify
  4. npm install
于 2018-09-08T10:29:29.080 回答
7

我有一个类似的问题。将 RXJS 从 6.x 恢复到最新的 5.x 版本,为 Angular 5.2.x 修复了它。

打开 package.json。

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

npm update

于 2018-05-01T21:10:16.997 回答
4

只需/Observable'rxjs/Observable';

如果你然后Cannot find module 'rxjs-compat/Observable'把下面的行放到终端,然后按回车。

npm install --save rxjs-compat
于 2018-10-08T10:47:12.787 回答
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);
  }
}
于 2018-05-26T07:28:04.583 回答
2

Angular 6 不支持该angular-split组件,因此要使其与 Angular 6 兼容,请在您的应用程序中安装以下依赖项

要使其正常工作,直到更新使用:

"dependencies": {
"angular-split": "1.0.0-rc.3",
"rxjs": "^6.2.2",
    "rxjs-compat": "^6.2.2",
}
于 2018-08-03T07:38:30.660 回答
0

就我而言,发生此错误是因为我的计算机中有旧版本的 ng cli。

运行后问题解决:

ng update

ng update @angular/cli

于 2018-07-03T15:52:37.597 回答
0

更新angular-in-memory-web-api版本。在教程angular-tour-of-heroes期间安装的默认angular-in-memory-web-api版本是 0.4。在我的情况下,它就像一个魅力。(使用 Angular 7 和 RxJS 6)

npm i angular-in-memory-web-api@0.8.0
于 2019-02-05T16:17:44.230 回答
0

你还没有安装 rxjs 库请安装

npm install rxjs-compat --save

于 2021-06-04T11:02:42.250 回答
-3

利用return Observable.of(HEROES);

于 2018-05-25T12:35:43.580 回答