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
- rxjs: 创建方法、类型、调度程序和实用程序
import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';
- rxjs/operators:所有管道运算符:
import { map, filter, scan } from 'rxjs/operators';
- rxjs/webSocket: web socket主题实现
import { webSocket } from 'rxjs/webSocket';
- rxjs/ajax:Rx ajax 实现
import { ajax } from 'rxjs/ajax';
- 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';
对我有帮助的是:
删除所有旧的导入路径并用新的替换它们,如下所示:
import { Observable , BehaviorSubject } from 'rxjs';)
删除node_modules
文件夹
npm cache verify
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
这对我有用。
打字稿代码:
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
- rxjs: 创建方法、类型、调度程序和实用程序
import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';
- rxjs/operators:所有管道运算符:
import { map, filter, scan } from 'rxjs/operators';
- rxjs/webSocket: web socket主题实现
import { webSocket } from 'rxjs/webSocket';
- rxjs/ajax:Rx ajax 实现
import { ajax } from 'rxjs/ajax';
- 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';
对我有帮助的是:
删除所有旧的导入路径并用新的替换它们,如下所示:
import { Observable , BehaviorSubject } from 'rxjs';)
删除
node_modules
文件夹npm cache verify
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
这对我有用。