Обещание не определено в файле пакета webpack - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть приложение 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 (), однако эти ошибки, а также модуль появляются неопределенными.

Если кто-то столкнулся с ошибкой, подобной этой, или имеет какое-либо пониманиечто касается того, как я мог решить эту проблему, это было бы очень признательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...