TypeScriptとRxJs v5で問題が発生しました。
yarn add @reactivex/rxjs
(yarn add rxjs
)を実行し、index.tsでimport Rx from '@reactivex/rxjs';
を実行し、このエラーが発生しました:
また、node ./node_modules/.bin/tsc
を実行すると、このエラーも返されましたerror TS2307: Cannot find module '@reactivex/rxjs'.
またやっている
import { Observable } from 'rxjs/Observable'
これは、RxJSよりもTS自体に関連しているようです。
"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"
]
}
この^構成はVSCodeの問題を修正するようですが、src/index.ts
に対してtsc
を実行しても動作しません
node_modules/rxjs/Observable.d.ts(69,60): error TS2693: 'Promise' only refers to a type, but is being used as a value here.
compileOptions
内に"moduleResolution": "node"
を設定して、TSのモジュール解決戦略を指定してみてください。
npm install rxjs --save
そしてあなたのTypeScriptで
import { Observable } from 'rxjs/Rx';
それは私のためにそれを修正しました。
私には以下のエラーがありました:
エラーTS2307:モジュール 'rxjs-compat/Observable'が見つかりません。
解決策:インポートする代わりに:
import { Observable } from 'rxjs/Observable';
使用する:
import { Observable } from 'rxjs';
すべてをカンマで区切って、インポートしたいオブザーバブルに配置できます。
import { Observable, of } from 'rxjs';
Visual Studio 2017のまったく新しい「Hello World」プロジェクトでも同じ問題が発生し、npm install rxjs
を実行しました。
基本的にこれは私のserver.ts
ファイルにありました:
import { Observable } from 'rxjs/Observable'
import * as http from 'http';
var port = process.env.port || 1337
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(port);
コンパイルオプションmodule
およびlib
に設定された値に応じて、これによりエラーが生成されました。
server.ts(1,28): error TS2307: Build:Cannot find module 'rxjs/Observable'.
または:
node_modules\rxjs\Observable.d.ts(73,59): error TS2693: Build:'Promise' only refers to a type, but is being used as a value here.
私のために働いたコンパイルオプションの勝利の組み合わせは次のとおりでした:
"compilerOptions": {
"module": "commonjs",
"lib": [ "es2015" ]
}
これにより、両方のエラーがなくなりました。
RxJS 5では、次のものを使用することになっています。
import * as Rx from 'rxjs';
または、ライブラリの特定の部分のみをインポートします。
import { Observable } from 'rxjs/Observable';
詳細については、以下を参照してください。 https://github.com/ReactiveX/rxjs/#installation-and-usage
次の構文を使用します。
import { Observable } from 'rxjs/Rx'
または
import Rx from 'rxjs/Rx';
Rx.Observable.of(1,2,3)
または
import { Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/map';
Observable.of(1,2,3).map(x => x + '!!!'); // etc
これらの例はすべてウェブサイトで見つけることができます: http://reactivex.io/rxjs/manual/installation.html
This is a hard nut to crack: my fix
in package.json dependencies confirm this code exists:
"rxjs": "^5.5.2",
In file /node_modules/@angular/core/src/application_ref.d.ts
//import { Observable } from 'rxjs/Observable';
// yeah, sure, I'm not supposed to, but I did and i worked
import { Observable } from 'rxjs/Rx';
in file node_modules/rxjs/src/tsconfig.json
{
"compilerOptions": {
"removeComments": false,
"preserveConstEnums": true,
"sourceMap": true,
"declaration": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"suppressImplicitAnyIndexErrors": true,
"moduleResolution": "node",
"target": "es6",
"outDir": "dist/es6",
"lib": [ "es2016.array.include" ]
},
"formatCodeOptions": {
"indentSize": 2,
"tabSize": 2
},
"bazelOptions": {
"suppressTsconfigOverrideWarnings": true
},
"files": [
"src/Rx.ts"
]
}
for this ng --version
Angular CLI: 1.6.7
Node: 8.11.1
OS: darwin x64
Angular: 5.2.10
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
@angular/cli: 1.6.7
@angular-devkit/build-optimizer: 0.0.42
@angular-devkit/core: 0.0.29
@angular-devkit/schematics: 0.2.0
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.7
@schematics/angular: 0.1.17
TypeScript: 2.4.2
webpack-dev-server: 2.11.2
webpack: 3.10.0