У меня есть приложение React / Redux, которое использует webpack и babel-polyfill.Однако в IE11 я получаю следующую ошибку: SCRIPT5009: 'Promise' is undefined.
Прежде чем этот вопрос будет помечен как дублирующий вопрос: Я знаю, что это обычно связано с использованием синтаксиса ES6 в браузерахкоторые не поддерживают его полностью, без использования какого-либо типа полифилла.
Моя проблема в том, что в настоящее время я использую webpack и babel-polyfill в том же формате, что и другие наши проекты, которые работают вIE11, но я все еще получаю эту ошибку.
Ошибка указывает на строку в моем файле пакета, сгенерированном веб-пакетом, строка кода, кажется, идет от моего суперагентного node_module (строка: 92993 в myDashboardBundle.js):
this._fullfilledPromise = new Promise(function(innerResolve, innerReject) {
self.end(function(err, res) {
if (err) innerReject(err);
else innerResolve(res);
});
});
Мой проект имеет webpack 3.5.5 и babel 6.26.0 и es6-обещание 2.3.0, установленные в пряжу / npm (мы переключились с npm на пряжу в прошлом году).
В моем 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-обещание и вызывать .polyfill (), однако эти ошибки, а также модуль появляются неопределенными.
Если кто-то столкнулся с ошибкой, подобной этой, или имеет какое-либо пониманиечто касается того, как я мог решить эту проблему, это было бы очень признательно.