我有一个使用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()的建议,但是这个错误以及模块出现的情况都未定义。
如果有人遇到与此类似的错误,或者对我该如何解决有任何见解,将不胜感激。