39

新しい es6 promises を使用する JavaScript ライブラリを作成しています。promise が定義されているため、Firefox でライブラリをテストできます。ただし、Karma と PhantomJS でコードをテストしようとすると、エラーが発生しますCan't find variable: Promise.。これは、PhantomJS ブラウザーが es6 の約束をまだサポートしていないためだと推測しています。

promise のポリフィルを取り込むように Karma を構成するにはどうすればよいですか?

4

5 に答える 5

73

Babel Polyfill をインストールするだけで、Babel ポリフィルを取り込むことができます。

npm install --save-dev babel-polyfill

次に、ソースの前にポリフィル ファイルを含め、次のfilesセクション内にテスト ファイルを含めますkarma.conf.js

files: [
  'node_modules/babel-polyfill/dist/polyfill.js',
  'index.js',   //could be /src/**/*.js
  'index.spec.js' //could be /test/**/*.spec.js
],

すべてのターゲット ブラウザーが Promises をサポートしていることがわかっている場合を除き、リリースされたビルドにもこのポリフィルを適用することをお勧めします。

本当に冒険したい場合は、Browserify を使用してファイルを取り込み、テストをよりモジュール化してから、Babelify を使用して ES6 を ES5 にトランスパイルすることができます。これらを使用してサンプル プロジェクトを作成し、参照用に Promise (PhantomJS2 で実行) を含む動作テストを作成しました。

于 2015-07-01T16:27:52.070 に答える
13

Babel 6 では、babel-polyfillpromise をサポートするためにインストールが必要です。

npm install --save-dev babel-polyfill

セクションkarma.conf.js内に行を追加しますfiles

files: [
  'node_modules/babel-polyfill/dist/polyfill.js',
  ....
]

https://github.com/babel/karma-babel-preprocessor#polyfillで十分に文書化されてい ます

于 2015-11-07T01:49:39.383 に答える