打字稿代码:
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);
}
}
错误信息:
带有Angular版本的错误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'。
package.json
文件:
答案 0 :(得分:159)
这可能会对 Angular 6 有所帮助,有关详细信息,请参阅此Document
import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';
import { map, filter, scan } from 'rxjs/operators';
import { webSocket } from 'rxjs/webSocket';
import { ajax } from 'rxjs/ajax';
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)
答案 4 :(得分:22)
您正在使用RxJS6。只需替换
import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs/observable/of';
作者
import { Observable, of } from 'rxjs';
答案 5 :(得分:6)
帮助我的是:
摆脱所有旧的导入路径,并用如下新路径替换它们:
import { Observable , BehaviorSubject } from 'rxjs';)
删除node_modules
文件夹
npm cache verify
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);