babel polyfillが含まれていますが、forEachはまだNodeListsのIE11では機能しません

Robert_QSS

私はバベル/ポリフィル@バベルでの作業とを含むWebPACKを持って、まだ使用しようとするとIE11はまだSCRIPT438エラーを投げている.forEachNodeList

これが私の package.json

{
  ...
  "scripts": {
    "build:js": "webpack --config ./_build/webpack.config.js"
  },
  ...
  "browserslist": [
    "IE 11",
    "last 3 versions",
    "not IE < 11"
  ],
  "babel": {
    "presets": [
      [
        "@babel/preset-env",
        {
          "useBuiltIns": "usage"
        }
      ]
    ]
  },
  "devDependencies": {
    "@babel/core": "^7.1.6",
    "@babel/preset-env": "^7.1.6",
    "babel-loader": "^8.0.4",
    "webpack": "^4.25.1",
    "webpack-cli": "^3.1.2"
  },
  "dependencies": {
    "@babel/polyfill": "^7.0.0"
  }
}

私のwebpack.config.js

const path = require('path');
const webpack = require('webpack');

module.exports = (env, argv) => {

  const javascript = {
    test: /\.js$/,
    use: {
      loader: 'babel-loader'
    }
  };

  // config object
  const config = {
    entry: {
      main: './_src/js/main.js',
    },
    devtool: 'source-map',
    output: {
      path: path.resolve(__dirname, '../js'),
      filename: '[name].js',
    },
    module: {
      rules: [javascript]
    }
  }

  return config;
}

そして最後に/_src/main.js、私はwebpackとbabelを実行しています。

const testList = document.querySelectorAll('.test-list li');

testList.forEach(item => {
  console.log(item.innerHTML);
})

https://babeljs.io/docs/en/babel-polyfillのドキュメントには、Webpackを介してロードする必要がない、importまたはrequire polyfillロードする場合は、が必要であると記載されていuseBuiltIns: "usage"ます。ただし、そのオプションを削除して、上部にあるポリフィル全体を手動でインポートしてもmain.js(バンドルが巨大になります)、IE11ではエラーが発生します。

だから...私は何が間違っているのですか?

Connexo

更新: Babel 7.4.0以降、Babelはでcore-jsラップするのではなく直接使用するように切り替えました@babel/polyfillcore-jsすでにポリフィルがforEachオンNodeListになっているため、追加のポリフィルは必要ありません。


babel-polyfillは、のような欠落しているWeb API /プロトタイプメソッドをポリフィルしませんNodeList.prototype.forEach

またNodeList.prototype.forEach、ES6の機能ではないため、質問のタイトルは誤解を招く可能性があることに注意してくださいforEach反復可能なコレクションについては、現在、推奨候補にすぎません(2018年8月現在)。

Javascriptのトップレベルに独自のポリフィルを含めるだけです。

if (window.NodeList && !NodeList.prototype.forEach) {
    NodeList.prototype.forEach = Array.prototype.forEach;
}

これは、core-js 3が安定するとすぐに変更される可能性があります:https//github.com/zloirock/core-js/issues/329

ES6で使用されている一般的なパターンを採用し始めた場合は、ポリフィルなしで実行することもできます。

const testList = [...document.querySelectorAll('.test-list li')];

または

const testList = Array.from(document.querySelectorAll('.test-list li'));

あなたが持っている他のオプションはfor...of代わりに使用することです:

const lis = document.querySelectorAll('.test-list li');
for (const li of lis) {
  // li.addEventListener(...) or whatever
}

最後に、一般的なES5パターンを採用することもできます。

var testList = document.querySelectorAll('.test-list li');
Array.prototype.forEach.call(testList, function(li) { /*whatever*/ });

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

IE11ではbabel-polyfillを使用してPromiseが定義されていません

分類Dev

classList.replace()は、babel-polyfillを使用した後のIE11のメソッドまたはプロパティではありません

分類Dev

React Hot Loaderは機能しているようですが、更新されません。[babel-preset-env]

分類Dev

Vue js vuecli3アプリケーションはie11では機能しません(babelはポリフィルをロードしていませんか?)

分類Dev

Babel toFileが機能しています。WebpackからFileへのBabelが壊れています

分類Dev

Webpackはgulp-babelでうまく機能していません

分類Dev

Webpack 4 / Babel2の機能がIE11で機能しない

分類Dev

array.findはBabelでは機能しません

分類Dev

Babel PresetはIE11でObject.assignのサポートを提供していません-「オブジェクトはプロパティまたはメソッド 'assign'をサポートしていません」

分類Dev

クラス内の矢印関数はchromeではサポートされていませんが、babelを介して正常に機能します。なぜですか?

分類Dev

Babel-cliクラスのプロパティがステージ2で機能していません

分類Dev

Gulp babelは完了しましたが、コードは更新されていません

分類Dev

babel-polyfillとbabel-plugins

分類Dev

Rollup + @babel/preset-env + @babel/polyfill

分類Dev

npm install babel-coreを解決する方法はありますが、まだインストールされていませんか?

分類Dev

Babel(gulp-babel)Uncaught ReferenceError:requireが定義されていません

分類Dev

Babel7-デコレータトランスフォームはbabel-loaderでは機能しません

分類Dev

「react-app-polyfill」はIE11では機能しません

分類Dev

BabelはマップをIE11で使用できるようにトランスパイルしますか?

分類Dev

BabelがIE11にURLSearchParamsポリフィルを提供しないのはなぜですか

分類Dev

babelは.babelrcを使用していません。どうして?

分類Dev

Babel 6 regeneratorRuntimeが定義されていません

分類Dev

Babel 7-ReferenceError:regeneratorRuntimeが定義されていません

分類Dev

Babel 6 regeneratorRuntimeが定義されていません

分類Dev

Reactクラスが定義されていません(text / babel)

分類Dev

babel ES7Async-regeneratorRuntimeが定義されていません

分類Dev

WebpackとBabelは、ES6のスプレッド構文のためにIE11とEdgeを壊すnode_modules内の依存関係をトランスパイルしていません

分類Dev

babel-preset-envがjsxを認識していません

分類Dev

Babel:「@ babel / plugin-transform-destructuring」プラグインを機能させることができません

Related 関連記事

  1. 1

    IE11ではbabel-polyfillを使用してPromiseが定義されていません

  2. 2

    classList.replace()は、babel-polyfillを使用した後のIE11のメソッドまたはプロパティではありません

  3. 3

    React Hot Loaderは機能しているようですが、更新されません。[babel-preset-env]

  4. 4

    Vue js vuecli3アプリケーションはie11では機能しません(babelはポリフィルをロードしていませんか?)

  5. 5

    Babel toFileが機能しています。WebpackからFileへのBabelが壊れています

  6. 6

    Webpackはgulp-babelでうまく機能していません

  7. 7

    Webpack 4 / Babel2の機能がIE11で機能しない

  8. 8

    array.findはBabelでは機能しません

  9. 9

    Babel PresetはIE11でObject.assignのサポートを提供していません-「オブジェクトはプロパティまたはメソッド 'assign'をサポートしていません」

  10. 10

    クラス内の矢印関数はchromeではサポートされていませんが、babelを介して正常に機能します。なぜですか?

  11. 11

    Babel-cliクラスのプロパティがステージ2で機能していません

  12. 12

    Gulp babelは完了しましたが、コードは更新されていません

  13. 13

    babel-polyfillとbabel-plugins

  14. 14

    Rollup + @babel/preset-env + @babel/polyfill

  15. 15

    npm install babel-coreを解決する方法はありますが、まだインストールされていませんか?

  16. 16

    Babel(gulp-babel)Uncaught ReferenceError:requireが定義されていません

  17. 17

    Babel7-デコレータトランスフォームはbabel-loaderでは機能しません

  18. 18

    「react-app-polyfill」はIE11では機能しません

  19. 19

    BabelはマップをIE11で使用できるようにトランスパイルしますか?

  20. 20

    BabelがIE11にURLSearchParamsポリフィルを提供しないのはなぜですか

  21. 21

    babelは.babelrcを使用していません。どうして?

  22. 22

    Babel 6 regeneratorRuntimeが定義されていません

  23. 23

    Babel 7-ReferenceError:regeneratorRuntimeが定義されていません

  24. 24

    Babel 6 regeneratorRuntimeが定義されていません

  25. 25

    Reactクラスが定義されていません(text / babel)

  26. 26

    babel ES7Async-regeneratorRuntimeが定義されていません

  27. 27

    WebpackとBabelは、ES6のスプレッド構文のためにIE11とEdgeを壊すnode_modules内の依存関係をトランスパイルしていません

  28. 28

    babel-preset-envがjsxを認識していません

  29. 29

    Babel:「@ babel / plugin-transform-destructuring」プラグインを機能させることができません

ホットタグ

アーカイブ