IntelliJ IDEA 在 rxjs5 中找不到 Observable 的运算符

IntelliJ IDEA does not find operators of Observable in rxjs5

我刚刚通过 npm i rxjs@5.0.0-beta.3 安装了 rxjs 5 beta 3。

我有以下示例代码:

import {Observable} from "rxjs"

new Observable(o => o.next(42)).filter(() => true);

例如,当使用 ts-node 时,这段代码编译得非常好。

但是在 IntelliJ IDEA 中查看此代码时,找不到 filter() 运算符。

在 Observable 实例上使用运算符时,也找不到它们。

Observable 的建议静态成员是:

Observable 实例的建议成员是:

我也尝试只导入我需要的东西,但我的 IDE 仍然告诉我 filter() 在 Observable 实例上不存在:

import {Observable} from "rxjs/Observable"
import "rxjs/add/operator/filter"

new Observable(o => o.next(42)).filter(() => true);

关于如何制作 IntelliJ 的任何建议 IDEA 了解运算符?

请检查IDEA 2016.1.2 or higher

注意: 目录 node_modules 不得从项目中排除。
否则,查看答案

注释 2:文件 package.json 必须包含直接依赖项(或开发依赖项)'rxjs'

已接受的答案无效。我已经测试了 IntelliJ IDEA 2016.2.1 EAP (ideaIU-162.1447.7),但问题仍然存在。

兔子洞如下:

  1. 在已接受的答案中,您发现 link 版本 2016.1,但这并不能解决问题。
  2. 然后您会看到对 IntelliJ bugtracker 的 link 评论,其中 OP 有 first/top 评论。
  3. 在那个 issue/bug 线程的底部,您会发现一条评论 saying IDEA 2016.2 162.426.1 EAP 肯定会解决问题,但事实并非如此。

最重要的是,如果你导入所有 RxJS 必须提供的 import {Observable} from 'rxjs/Rx'; IntelliJ 仍然会抱怨它找不到像 .map.filter[=18 这样的方法=]

要解决此问题,您需要在 IntelliJ 中将 RxJS 添加为 javascript 库:

  1. 转到设置 -> 语言和框架 -> JavaScript -> 图书馆
  2. 单击添加...
  3. 通过单击 + 按钮添加 node_modules/rxjs
  4. 单击所有 确定 按钮,直到您返回编辑器。

此解决方案经测试适用于 IDEA 2016.1.3