Я использую 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?