1

test.jsファイルにexportというキーワードを使用しようとしています。 test.jsファイルはかなり簡単です。Chrome6でes6エクスポートキーワードを使用できません

const foo = Math.PI; 
export { foo }; 

そして、私はkarmaを使ってテストを行っています。私のChromeバージョンは61より大きく、下のログに表示されています。 exportの構文はクロムのバージョンが61以上で完全にサポートされているので、上記のコードは機能するはずですが失敗します。

$ karma start --browsers Chrome 
01 10 2017 12:29:37.346:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/ 
01 10 2017 12:29:37.350:INFO [launcher]: Launching browser Chrome with unlimited concurrency 
01 10 2017 12:29:37.357:INFO [launcher]: Starting browser Chrome 
01 10 2017 12:29:38.288:INFO [Chrome 63.0.3205 (Mac OS X 10.11.6)]: Connected on socket PV-MAe-R6vm4JntCAAAA with id 24009783 
Chrome 63.0.3205 (Mac OS X 10.11.6) ERROR 
    Uncaught SyntaxError: Unexpected token export 
    at test/test.js:2 

これはなぜ起こっているのでしょうか?

答えて

2

ESモジュール固有のキーワード(importおよびexport)を正しく解釈するには、スクリプトをモジュールとしてロードする必要があります。そしてカルマdoesn't do that

カルマがサポートしていても、現実世界のアプリケーションは、CommonJS/UMDモジュールで構成されるNPMパッケージなど、バンドル業者だけが適切に処理できるものに依存しています。

現在、ESモジュールに関連するテストは、カルマで蒸留する必要があります。

+0

ご回答ありがとうございます。 ES6モジュールをサポートする他のテストツールはありますか?私はカルマと結びついていないので、可能ならば蒸散器を追加することなく、すべてをES6に固執することを好むだけです。私は 'カルマ'、 'モカ'、 'クニット'の相対的な能力に精通していません。いずれもES6を完全にサポートしていますか?また、どのバンドラを使用するのかは分かりません。 'Rollup'は蒸散可能ですか? – Pushpendre

+0

モカはブラウザ用のランナーを提供していません。 Jestがありますが、設計によってネイティブモジュールをサポートすることはほとんどありません。アプリはサードパーティのモジュールを脅かすので、やはり実用的ではありません。ネイティブでこれを行うときにモジュールをスタブ/モック/プロセスする機会はゼロです。ロールアップやWebpackを使用してアプリをトランジリングしてバンドルすることはできますが、実際にはフル機能のテストランナー(カルマが担当)がこれを処理しています。カルマはそれを(プラグイン経由で)行います(https://github.com/babel/karma-babel-preprocessor)。 – estus

関連する問題