【问题标题】:Module not found: Error: Can't resolve 'rxjs/add/observable/throw'找不到模块:错误:无法解析“rxjs/add/observable/throw”
【发布时间】:2018-11-13 17:32:12
【问题描述】:

我的“posts.service.ts”中有以下导入

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { NotFoundError } from '../commons/errors/not-found-error.errors';
import { AppErrors } from '../commons/errors/app-errors.errors';
import { Observable } from 'rxjs';
import { catchError } from 'rxjs/operators';
import 'rxjs/add/observable/throw';

我什至检查了 node_modules 文件夹中的“rxjs/add/observable/throw”,它在那里可用。但是我在项目编译阶段遇到了一个奇怪的错误,如下所示。

./src/app/services/posts.service.ts 中的错误 找不到模块:错误:无法解析“/Users/gauthampughaz/Development/angular/practice/src/app/services”中的“rxjs/add/observable/throw”

ℹ「wdm」:编译失败。

【问题讨论】:

  • 哪个版本的角度?
  • 你使用什么版本的 RxJS?
  • 使用 import 'rxjs/Observable';
  • 我使用 Angular CLI 和 RxJS 6

标签: angular rxjs


【解决方案1】:

从 RxJS 6 开始,您应该直接从 'rxjs' 导入“创建”方法:

import { throwError } from 'rxjs';

只是不要忘记您需要设置正确的路径图,但如果您使用的是 angular-cli,则无需担心这一点。更多详情见:https://github.com/ReactiveX/rxjs/blob/6.2.0/doc/pipeable-operators.md#build-and-treeshaking

【讨论】:

  • 谢谢,虽然我使用 angular CLI 我得到这个错误,我也可以用 throwError() 模仿 Observable.throw() 的功能吗?
  • 你有哪些 Angular 和 RxJS 版本?
【解决方案2】:

_throw 现在导出为 throwError。

如果你不想替换 _throw 的每个实例,你可以这样做。 (不推荐)。

import { throwError as _throw } from 'rxjs'; 

或者你可以在任何你使用 _throw 的地方更改 throwError

在此处查看其他重大更改:

https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md#breaking-changes-7

【讨论】:

    猜你喜欢
    • 2020-08-05
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多