web-dev-qa-db-ja.com

「babel-polyfillのインスタンスは1つのみ許可されています」エラー

このエラーを診断して修正するのに助けが必要です:

"Error: only one instance of babel-polyfill is allowed"

Package.jsonに次のものがあります。

"devDependencies": {
    "babel-core": "^6.23.1",
    "babel-jest": "^19.0.0",
    "babel-loader": "^6.3.2",
    "babel-plugin-transform-object-rest-spread": "^6.23.0",
    "babel-preset-es2015": "^6.22.0",
    "babel-preset-react": "^6.23.0" ...

"dependencies": {
    "babel-polyfill": "^6.23.0" ...

そして、これと私のwebpack設定のこのエントリ行:

entry: ["babel-polyfill", path.resolve(APP_PATH, 'index')],
...
module: {
 rules: [
  {
    test: /\.js$/,
    exclude: /node_modules/,
    loader: 'babel-loader',
    query: {
      // specify that we will be dealing with React code
      presets: ['react', 'es2015']
    }
  }
]}
12
foobar

犯人がHtmlWebpackPluginの場合、プラグインをインスタンス化するときにオプションinject: falseを追加する必要があります。このオプションを使用しない特定の構成では、ビルドされたjavascriptコードが2回ロードされます。

9
Aethix

べき等バベルポリフィルは複数回インポート可能

NPMからインストール

npm install --save idempotent-babel-polyfill

次にインポートする

import 'idempotent-babel-polyfill';
4
Jam Risser

Only one instance of babel-polyfill is allowedは通常、CommonsChunkPluginまたはHtmlWebpackPluginを使用するときに、ラップされるファイルの順序が正しくない場合に表示されます。

htmlWebpackPluginの場合、chunksSortModeを使用してファイルを手動でソートできます。

"webpack": "^1.14.0"を使用:

new HtmlWebpackPlugin({
  ...
  chunksSortMode: 'dependency',
  ...
}),

出典: gdi2290 @ GitHub-2016年7月1日/ 2018年1月22日

3
Wouter Vanherck

他のバベルモジュールから間接的に取得している可能性があります。

可能な解決策:

  1. Babelモジュールのすべてのバージョンを同じにします。おそらく、エラーの原因はbabel-polyfilの異なるバージョンです。
  2. Package.jsonからbabel-polyfilを削除して、から使用されるようにします
    babel-plugin-transform-object-rest-spread。

参照: https://github.com/babel/babel/issues/1019

jameslkによるコメント

とにかくそれを理解しました。 babel-runtimeはbabel-plugin-transform-runtimeに移動したようです。これを使用するには、プラグインのリストに追加する必要があります。それがどこかに文書化されていれば助けになるだろう。

0
m.rohail.akram