【问题标题】:Angular 4: Module not found error regarding RxJsAngular 4:关于 RxJs 的模块未找到错误
【发布时间】:2017-05-08 15:39:00
【问题描述】:

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

我错过了什么?

【问题讨论】:

    标签: angular rxjs reactivex


    【解决方案1】:

    我有类似的错误..

    `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

    【讨论】:

    • 你拯救了我的一天!
    • 在做npm install rxjs@6 rxjs-compat@6 --save之后我现在得到这个错误:./node_modules/rxjs/_esm5/index.js Module build failed: Error: ENOENT: no such file or directory, open
    • 我醒来并尝试启动我的项目并看到错误,在看到您的回答后我安装了rxjs-compat 并修复了它。我不知道为什么?! :))
    【解决方案2】:

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

    新的解决方案应该是:

    import { filter } from 'rxjs/operators';

    不是

    import 'rxjs/add/operator/filter';

    更多细节在这里: https://www.academind.com/learn/javascript/rxjs-6-what-changed/

    【讨论】:

      【解决方案3】:

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

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

      import 'rxjs/add/operator/filter';
      

      【讨论】:

      • 我所有的import语句都是这样的。我刚刚检查了@reactivex 文件夹,其中的@reactivex\rxjs\dist\cjs\add 文件夹是空的,我想这就是它抱怨的原因。如何重新安装这些?
      • 顺便说一句,rxjs文件夹下的一切都在里面
      • 删除你的 node_modules 目录。确保你的 package.json 有这个依赖:“rxjs”:“^5.1.0”。然后再次运行 npm install。
      • 这个答案显示了rxjsstackoverflow.com/a/52630985/8160553的新导入格式
      【解决方案4】:

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

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

      import { map } from 'rxjs/operators';
      
      .pipe(map(
            (response) => response.json()
       ))
      

      它对我有用。

      【讨论】:

        【解决方案5】:

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

        我通过在 app.module.ts 中导入 rxjs 解决了这个问题。尝试在 app.module.ts 中添加以下代码

        import 'rxjs';
        

        【讨论】:

          【解决方案6】:

          如果您使用 Angular 4+,您可能需要安装“rxjs-compat”。

          【讨论】:

            猜你喜欢
            • 2018-11-06
            • 1970-01-01
            • 2018-06-01
            • 1970-01-01
            • 1970-01-01
            • 2018-06-12
            • 2020-01-05
            • 2019-07-12
            • 1970-01-01
            相关资源
            最近更新 更多