2017-04-20 13 views
3

Pythonの背景から来て、Node.jsを初めて使用しているので、Node.js REPLでコードを対話的に試してみるのは驚くほど困難です。私が直面した1つの重要な問題は、importsです。Node.jsでのES6スタイルのインポートREPL

ES6スタイルのインポートはNode.js REPLでは機能せず、requireを使用してCommonJSスタイルのインポートを使用する必要があります。例:ノードプロンプトにimport rxjsと書くことができず、require('rxjs')を使用する必要があります。これにより、貼り付けスクリプトをノードREPLにコピーして迅速にテストすることが難しくなります。まず、すべてのES6スタイルのインポートを変換し直して、直感的ではないと感じるインポートを行う必要があります。

Node.js REPLからES6形式のインポートを使用する簡単な方法はありますか?

同様:

$ node
> import 'rxjs';
> import {map} from 'rxjs/operator/map';

私もモジュールのインポートをサポートしていないようbabel-nodeを試してみました。

答えて

1

答えがでなく、であるか、またはでないことがわかりました。です。今後サポートされる予定ですが、ES2015 importおよびexportは、CommonJS requireおよびmodule.exportsのインプレース置換として機能しません。これは単に同じように動作しないためです。詳細はthis Node.js blog postthis SO questionでご覧いただけます。

(今babel-cliと呼ばれている)babel-nodeを使用してのあなたの考えは悪くありませんでした:babelは、どちらのタイプのシステム用に設計されたモジュールを取得することができ、シムの一種である相互運用可能require機能を実装します。残念ながら、official websiteクレームはREPLでのこの機能のサポートの欠如:

ES6-style module-loading may not function as expected

Due to technical limitations ES6-style module-loading is not fully supported in a babel-node REPL.

それにもかかわらず、この問題はとにかくREPLに頼るべきではありません生産のコードには適用されません。代わりに、REPLを使用しての、あなたがbabel-cliを含む最低限のプロジェクトでスクリプトを書いて考えると、transpiledバージョンを実行するためのスクリプトを作成することがあります。

{ 
    "name": "my-test-chamber", 
    "private": true, 
    "scripts": { 
    "build": "babel src/main.js -o lib/main.js", 
    "start": "npm run build && node lib/main.js" 
    }, 
    "dev-dependencies": { 
    "babel-cli": "^6.0.0" 
    } 
} 
+0

このソリューション 'バベル-cli'を使用してはしていないようですprodで働く。インポート行 'import 'rxjs';'で 'SyntaxError:Unexpected token import'を取得します。しかし、これはREPLでのES6のインポートを処理する方法があるかどうかに関して私の質問に答えます。私はNode.jsがこれからのリリースでこれについてのソリューションをすぐに導入してくれることを願っています。 –

+0

@PranjalMittal私は 'rxjs'が何であるか分かりませんが、モジュール名を引用符で囲む必要があります。そうすれば、パッケージ内のすべてを名前空間の中に入れて、 'import * as rxks from 'rxks''とすることができます。それでも、REPLが機能するには十分ではありません。 –

関連する問題