Angular - "has no exported member 'Observable'"

Angular - "has no exported member 'Observable'"

打字稿代码:

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

}

错误信息:

error TS2307: Cannot find module 'rxjs-compat/Observable'. node_modules/rxjs/observable/of.d.ts(1,15): error TS2307: Cannot find module 'rxjs-compat/observable/of'. src/app/hero.service.ts(2,10): error TS2305: Module '"F:/angular-tour-of-heroes/node_modules/rxjs/Observable"' has no exported member 'Observable'. src/app/hero.service.ts(15,12): error TS2304: Cannot find name 'of'.

package.json 版本为 Angular 的文件:

我把原来的代码换成import { Observable, of } from 'rxjs',问题解决

我遇到了类似的问题。将 RXJS 从 6.x 回滚到最新的 5.x 版本修复了 Angular 5.2.x.

打开package.json。

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

运行 npm update

这可能对 Angular 6 有关更多信息,请参阅此 Document

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

使用return Observable.of(HEROES);

我的决定是添加以下导入: 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);
  }
}

只需输入:

import { Observable} from 'rxjs';

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

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

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

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

问题在运行后解决:

ng update

ng update @angular/cli

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

要使其在更新前正常工作,请使用:

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

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

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

来自

import { Observable, of } from 'rxjs';

对我有帮助的是:

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

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

  2. 删除node_modules文件夹

  3. npm cache verify
  4. npm install

只需从 'rxjs/Observable';

中删除 /Observable

如果你得到 Cannot find module 'rxjs-compat/Observable' 只需将下面的行输入 thr 终端并按回车键。

npm install --save rxjs-compat

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

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

试试这个:

npm install rxjs-compat --save

你还没有安装rxjs库请安装

npm install rxjs-compat --save

就运行

npm i rxjs-compat

这对我有用。