Я использую webpack для сборки своего JavaScript. Я в зависимости от модулей, таких как popsicle, которые используют any-promise.
Здесь мой код:
var popsicle = require('popsicle');
popsicle.get('/').then(function() {
console.log('loaded URL');
});
Это прекрасно работает в браузерах, где Promise доступен, но IE 11 не предоставляет Promise. Поэтому я хочу использовать es6-promise как polyfill.
Я попытался добавить явный ProvidePlugin к моему webpack.config.js:
plugins: [
new webpack.ProvidePlugin({
'Promise': 'exports?global.Promise!es6-promise'
})
]
Но я все еще получаю ошибку в IE 11: any-promise browser requires a polyfill or explicit registration e.g: require('any-promise/register/bluebird').
Я попытался явно привязать глобальное:
global.Promise = global.Promise || require('es6-promise');
Но IE 11 дает другую ошибку: Object doesn't support this action.
Я также попытался явно зарегистрировать es6-обещание:
require('any-promise/register/es6-promise');
var popsicle = require('popsicle');
Это работает, но я должен сделать это в каждом файле, который загружает popsicle. Я хочу просто прикрепить Promise к window.
Как я могу гарантировать, что window.Promise всегда определен, используя webpack?