Angular 4:关于 RxJs 的模块未找到错误

Angular 4: Module not found error regarding RxJs

在构建 Angular 应用程序时,我遇到了很多这样的错误,下面只是第一个

ERROR in ./~/@reactivex/rxjs/dist/cjs/Rx.js
Module not found: Error: Can't resolve './add/operator/filter' in 
'...\node_modules\@reactivex\rxjs\dist\cjs'
 @ ./~/@reactivex/rxjs/dist/cjs/Rx.js 70:0-32
 @ ./~/@reactivex/rxjs/index.js
 @ ./~/ri-api-client/dist/index.js
 @ ./src/app/core/api.service.ts
 @ ./src/$$_gendir/app/app.module.ngfactory.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

我错过了什么?

根据您的错误消息,您的导入语句似乎不正确。它抱怨在 node_modules/@reactivex 中找不到东西,但它应该在 node_modules/rxjs.

中查找

您的导入语句应如下所示:

import 'rxjs/add/operator/filter';

我有类似的错误..

`ERROR in ./src/app/shared/giphy/giphy.service.ts`

Module not found: Error: Can't resolve 'rxjs/add/operator/map' in '/Users/user1/opt/work/mine/development/ic/ic-pms/pms-ui/src/app/shared/giphy' ℹ 「wdm」: Failed to compile. ERROR in src/app/shared/giphy/giphy.service.ts(16,35): error TS2339: Property 'map' does not exist on type 'Observable<Object>'.

答案是 npm install rxjs@6 rxjs-compat@6 --save

我发现 angular 在服务中使用它的文件夹中寻找 rxjs/add/operator/map 而不是从 node_modules.

我通过在 app.module.ts 中导入 rxjs 解决了这个问题。 尝试在 app.module.ts

中添加以下代码
import 'rxjs';

RXJS 在版本 6+ 中更改了语法

新的解决方案应该是:

import { filter } from 'rxjs/operators';

不是

import 'rxjs/add/operator/filter';

这里有更多详细信息: https://www.academind.com/learn/javascript/rxjs-6-what-changed/

.map使用管道方法 只需添加 --

.管道( 你的代码, 地图......);

import { map } from 'rxjs/operators';

.pipe(map(
      (response) => response.json()
 ))

对我有用。

如果您使用 angular 4+,您可能需要安装 'rxjs-compat'。