在webpack捆绑文件中未定义承诺

时间:2019-02-15 19:25:43

标签: javascript reactjs webpack internet-explorer-11 es6-promise

我有一个使用webpack和babel-polyfill的React / Redux应用程序。但是,在IE11中,出现以下错误:SCRIPT5009: 'Promise' is undefined.

在此问题被标记为重复问题之前: 我知道这通常是在不完全支持它的浏览器中使用ES6语法而不使用某种类型的polyfill来实现的。

我的问题是我目前正在使用webpack和babel-polyfill,其格式与在IE11中工作的其他项目相同,但是仍然出现此错误。

错误指向我的webpack生成的捆绑文件中的一行,该行代码似乎来自我的超级代理node_module(myDashboardBundle.js中的行:92993):

this._fullfilledPromise = new Promise(function(innerResolve, innerReject) {
  self.end(function(err, res) {
    if (err) innerReject(err);
    else innerResolve(res);
  });
});

我的项目在yarn / npm中安装了webpack 3.5.5和babel 6.26.0和es6-promise 2.3.0(我们去年从npm切换到yarn)。

在我的webpack.common.js中,我在条目中包含babel-polyfill,在加载器中包含babel-loader:

'use strict';
const path = require('path');
const webpack = require("webpack");
module.exports = {
  entry: [
    "./myDashboard.js",
    'babel-polyfill',
  ],
  output: {
    filename: "myDashboardBundle.js",

  },
  resolve: {
    modules: [
      path.resolve('./'),
      'node_modules',
    ]
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
        include: __dirname,
      },
      {
        test: /\.css?$/,
        loaders: ['style-loader', 'raw-loader'],
        include: __dirname
      }]
  },
  plugins: [
    new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
  ],
};

在我的.babelrc中,我将浏览器预设中的Explorer 11定位为:

{
  "presets": [
    ["env", {
      "targets": {
        "chrome": 52,
        "browsers": ["last 2 versions", "safari 7", "Explorer 11"]
      }
    }],
    ["es2015", {"modules": false}],
    "stage-0",
    "react",
   ],
  "plugins": [
    "emotion",
    "react-hot-loader/babel"
  ]
}

我已经看到将“ babel-polyfill”放置在“ ./myDashboard.js”上方的建议,但该错误仍然存​​在。我也看到了导入es6-promise并调用.polyfill()的建议,但是这个错误以及模块出现的情况都未定义。

如果有人遇到与此类似的错误,或者对我该如何解决有任何见解,将不胜感激。

0 个答案:

没有答案