簡體   English   中英

webpack 2在IE11上不起作用?

[英]webpack 2 doesn't work on IE11?

我有一個非常基本的javascript項目,它使用webpack(^ 2.6.0)作為模塊捆綁器。 作為供應商模塊有一個依賴項,我有一個入口點。 我的配置如下:

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"
        })
    ]
};

這將創建bundle bundle.jsvendor.js vendor-bundle還包含webpack-bootstrap-code,它在加載任何模塊之前加載。 現在,檢查引導代碼顯示在第40行,生成了webpack

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

不幸的是,IE11上沒有Promise,即使你在包含Promise(例如import 'babel-polyfill'import 'babel-polyfill'作為入口點的第一件事,或者甚至作為它自己的入口點,它也永遠不會得到在引導代碼運行之前執行,這意味着我不能在IE11上使用此代碼,除非我在webpack-bundles之前手動包含Promise-polyfill。 不出所料,IE11拋出了一個Promise is not defined錯誤,甚至在我得到任何代碼甚至是供應商包之前。

我在這里遺漏了什么或這是預期的行為嗎? 我無法在webpack文檔中找到任何可以解決此問題的內容。

這似乎是webpack 2.6.0引入的一個問題,已經發布了一個錯誤: https//github.com/webpack/webpack/issues/4916

移動到babel 7時我遇到了類似的問題。我沒有指定useBuiltIns鍵,因此未應用polyfill。

"useBuiltIns": "usage"是我失蹤的重要路線。

"debug": true對於確定正在應用的polyfill非常有幫助

{
  "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/*"]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM