2017-09-27 12 views
2

私はmochaを使用して、dynamic importsを含むes6 stage-0構文で記述されたreact/webpack/babelアプリケーションをテストしています。 WebPACKのは、エラーなしで、それをコンパイルしますが、動的なインポート構文達するとモカは、次のエラーがスローされます。Mochaは動的インポートを認識しません

import('path/to/file').then(...) 
^^^^^^ 
SyntaxError: Unexpected token import 

私が実行しているコマンドは次のとおりです。

$ mocha --compilers js:babel-register src/**/*.test.js 

そして、私の.babelrcに、私は次のように持っているが:

{ 
    "presets": ["es2015", "react", "stage-0"] 
} 
+0

「動的インポートを認識する」というのはモカの仕事ではありません。モカはノードで実行され、**ノード**にはインポート(ネイティブまたはスタティック)のネイティブサポートがありません。 BabelはそれらをNodeが消費できるものに変換する必要があります。経験に基づいて、正しく構成されたBabelは静的インポートの変換に問題がないことがわかります。私はそれが動的なものをどのように扱うのかわかりません。 [Node's documentation](https://nodejs.org/api/modules.html)には、動的なインポートに相当する簡単なネイティブNodeはありません。 – Louis

+0

@ルイスしかし、もし私が(ステージ0のプリセットで)コンパイラとしてbabelを使用しているのであれば、それを適切に処理するべきではないでしょうか? –

答えて

3

@louisが述べたように、これはノードの問題です。解決策はバベルにdynamic-import-nodeプラグインを追加することです:

ノードで import(...)構文のサポートが追加されます
{ 
    "presets": ["es2015", "react", "stage-0"], 
    "plugins": ["dynamic-import-node"] 
} 

+0

'syntax-'プラグインは、 'import()'を解析したいが、それを_not_変換するためのものです。 'dynamic-import-node'のようなプラグインの横にそれを使用するのはノーオペレーションです。削除する必要があります。 – loganfsmyth

+0

@loganfsmyth上記のプラグインのいずれかを使用して、他の原因ノードがエラーをスローすることはありません。どんな考え?より良い解決策はありますか? –

+1

'dynamic-import-node'は必要ですが、' syntax-dynamic-import'は必要ありません。 'dynamic-import-node'プラグインは、' syntax-dynamic-import'を内部に含みます。](https://github.com/airbnb/babel-plugin-dynamic-import-node/blob/master/src/index .js#L1) – loganfsmyth

関連する問題