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'。
在构建 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'。