".../node_modules/rxjs/Rx"没有导出名为'throwError'的成员。

10
Angular文档中提到了一个名为"throwError"的类,其导入语句如下所示。
import { Observable, throwError } from 'rxjs';

但是我的编译器无法找到这个类,并且会显示以下错误信息:

src/app/shared/services/myservice.service.ts(3,10) 中的错误: TS2305: 模块“D:/workspace/dev/MyProject/node_modules/rxjs/Rx”没有导出成员“throwError”。

以下是我的环境详细信息:

Angular CLI: 1.6.8
Node: 8.11.1
OS: win32 x64
Angular: 5.2.8
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, platform-server, router

@angular/cdk: 5.2.4
@angular/cli: 1.6.8
@angular/material: 5.2.4
@angular/service-worker: 1.0.0-beta.16
@angular-devkit/build-optimizer: 0.0.42
@angular-devkit/core: 0.4.5
@angular-devkit/schematics: 0.0.52
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.8
@schematics/angular: 0.1.17
typescript: 2.4.2
webpack: 3.10.0
我错过了什么?

1
这是关于你的Angular版本的文档:https://v5.angular.io/guide/http#getting-error-details。正如你所看到的,你需要使用`rxjs/observable/ErrorObservable`中的`ErrorObservable`。 - yurzui
你正在使用哪个版本的 RxJS? - Basavaraj Bhusani
3个回答

18

您是否正在寻找_throw可观测对象?

import {_throw} from 'rxjs/observable/throw';

更新

您正在查看包含throwError函数的rxjs版本6的Angular 6文档。对于Angular 5(包括rxjs 5),请使用_throw


8

我这样做是因为我不喜欢使用以_开头的单词。

import { _throw as throwError } from 'rxjs/observable/throw';

我喜欢这个。它可以简化更新到下一个版本,因为你只需要更改导入。 - Evgeniy Malyutin

0

这里有 RxJS 的文档。链接 -> https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md

因为 throw 是一个关键字,你可以在 import { _throw } from 'rxjs/observable/throw' 后使用 _throw

或者,如果你不想在 _throw 中使用前导的 _,你可以按照以下方式操作:

import { ErrorObservable } from 'rxjs/observable/ErrorObservable';
...
const e = ErrorObservable.create(new Error('My bad'));
const e2 = new ErrorObservable(new Error('My bad too'));

你正在导入 throw,但是使用的是 ErrorObservable。你提供的示例是一种替代方案,以防您不喜欢前导 _ - CornelC
@CornelC,是的,这是一种替代方案。我会更正答案。谢谢。 - Basavaraj Bhusani
@CornelC,你也可以编辑答案,如果你认为它们需要编辑的话。再次感谢。 - Basavaraj Bhusani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接