Pertanyaan webpack 2 tidak berfungsi di IE11?


Saya memiliki proyek javascript yang sangat dasar yang menggunakan webpack (^ 2.6.0) sebagai bundel modul. Ada satu ketergantungan sebagai modul vendor, dan saya memiliki satu titik masuk. Konfigurasi saya adalah sebagai berikut:

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

module.exports = {
    entry: {
        bundle: './modules/main.js',
        vendor: ['react']
    },
    output: {
        path: path.join(__dirname, 'build'),
        filename: '[name].js',
        chunkFilename: '[id].js'
    },
    plugins: [
        new webpack.optimize.CommonsChunkPlugin({
            name: "vendor"
        })
    ]
};

Ini menciptakan bundel bundle.js dan vendor.js. Vendor-bundel juga berisi webpack-bootstrap-code, yang dimuat SEBELUM semua modul saya dimuat. Sekarang, periksa bahwa kode bootstrap mengungkapkan bahwa pada baris 40, webpack dibuat

/******/    var resolvedPromise = new Promise(function(resolve) { resolve(); });

Sayangnya, Janji tidak tersedia di IE11, dan bahkan jika Anda menyertakan polyfill yang mencakup Janji (dengan mis. import 'babel-polyfill') sebagai hal pertama di entry point, atau bahkan sebagai entry point-nya, tidak akan pernah dieksekusi sebelum bootstrapping code berjalan, yang berarti saya tidak bisa menggunakan kode ini di IE11 kecuali saya menyertakan Promise-polyfill secara manual sebelum saya webpack-bundel. Tidak mengherankan, IE11 melempar a Promise is not defined kesalahan bahkan sebelum saya mendapatkan kode apa pun atau bahkan ke bundel vendor.

Apakah saya kehilangan sesuatu di sini atau apakah ini perilaku yang diharapkan? Saya tidak dapat menemukan apa pun di dokumen webpack untuk mengatasi masalah ini.


5
2018-05-24 17:37


asal


Jawaban:


Sepertinya ini adalah masalah yang diperkenalkan dengan webpack 2.6.0, bug sudah dikeluarkan: https://github.com/webpack/webpack/issues/4916


5
2018-05-24 18:10



Saya memiliki masalah yang sama ketika pindah ke babel 7. Saya tidak menentukan kunci useBuiltIns sehingga polyfill tidak sedang diterapkan.

"useBuiltIns": "usage" adalah garis penting yang saya lewatkan.

"debug": true juga sangat membantu dalam menentukan polyfill apa yang sedang diterapkan

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "browsers": ["IE >= 11"]
        },
        "useBuiltIns": "usage",
        "debug": true
      }
    ],
    "@babel/preset-react"
  ],
  "plugins": [
      "@babel/plugin-proposal-object-rest-spread", 
      "@babel/plugin-proposal-class-properties", 
      "@babel/plugin-transform-classes"
  ],
  "ignore": ["/node_modules/*"]
}

2
2018-04-05 18:42