角度-“没有输出成员‘可观察’”

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/Observer’。 Node _ module/rxjs/Observer/of.d.ts (1,15) : 错误 TS2307: 无法找到 模块‘ rxjs-compat/Observer/of’. src/app/hero.service.ts (2,10) : 错误 TS2305: 模块 “ F:/angle-Tour-of-Hero/node _ module/rxjs/Observatory able”没有 导出的成员‘ Observer able’. src/app/her.service.ts (15,12) : error TS2304: 找不到“ of”的名称。

带有角度版本的 package.json文件:

version

219020 次浏览

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

enter image description here

enter image description here

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

打开包 Json。

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

运行 npm update

这可能有助于在 角度6的更多信息参考这个 文件

  1. 创建方法、类型、调度程序和实用程序
import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';
  1. rxjs/operators: All pipeable operators:
import { map, filter, scan } from 'rxjs/operators';
  1. Rxjs/webSocket: Web Socket 主题实现
import { webSocket } from 'rxjs/webSocket';
  1. rxjs/ajax: The Rx ajax implementation
import { ajax } from 'rxjs/ajax';
  1. Rxjs/test : 测试实用程序
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

在角度6中不支持 angular-split组件,所以为了使它与角度6兼容,在应用程序中按照依赖关系安装

在更新之前让它工作使用:

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

你正在使用 RxJS6。只是替换

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'只是把下面的行到终端和按回车。

npm install --save rxjs-compat

更新 内存角度网络应用程序接口版本。在教程 角色英雄之旅中安装的默认 内存角度网络应用程序接口版本是0.4。对我来说简直是神来之笔。 (使用角7和 RxJS6)

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

这对我有用。