RxJs和Typescript.TS2307:找不到模块'@ reactivex/rxjs'

Ale*_*nez 8 rxjs typescript rxjs5

我遇到了typescript和RxJs v5的问题.

请查看更新部分.

我做了yarn add @reactivex/rxjs(也yarn add rxjs)和我的index.ts做了import Rx from '@reactivex/rxjs';并得到了这个错误:VSCode错误

此外,如果我跑,node ./node_modules/.bin/tsc我也得到了这个错误error TS2307: Cannot find module '@reactivex/rxjs'.

UPDATE

也在做

import { Observable } from 'rxjs/Observable'
Run Code Online (Sandbox Code Playgroud)

抛出同样的错误 在此输入图像描述.

更新2

那么这似乎与TS本身比与RxJS更相关.

"compilerOptions": {
    "module": "commonjs",
    "allowJs": true,
    "outDir": "dist",
    "target": "es2015",
    "noImplicitAny": true,
    "noEmit": true,
    "strictNullChecks": true,
    "suppressExcessPropertyErrors": false,
    "suppressImplicitAnyIndexErrors": false,
    "allowUnreachableCode": false,
    "allowUnusedLabels": false,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "lib": [
        "es2015",
        "dom"
    ]
}
Run Code Online (Sandbox Code Playgroud)

有了这个^配置似乎解决了VSCode问题,但运行tscsrc/index.ts不工作

node_modules/rxjs/Observable.d.ts(69,60): error TS2693: 'Promise' only refers to a type, but is being used as a value here.
Run Code Online (Sandbox Code Playgroud)

小智 10

尝试在"moduleResolution": "node"内部设置compileOptions以指定TS的模块分辨率策略.

npm install rxjs --save

在你的打字稿中

import { Observable } from 'rxjs/Rx';

这为我解决了这个问题.


小智 5

对我来说,我遇到了以下错误:
错误 TS2307:找不到模块“rxjs-compat/Observable”。

解决方案:而不是导入:

import { Observable } from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)

用:

import { Observable } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

并且您可以通过用逗号分隔所有内容来放入要导入的可观察对象,例如:

import { Observable, of } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)


mar*_*tin 2

对于 RxJS 5 你应该使用:

import * as Rx from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

或者仅导入库的特定部分:

import { Observable } from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅:https ://github.com/ReactiveX/rxjs/#installation-and-usage