我正在使用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-promise:
require('any-promise/register/es6-promise');
var popsicle = require('popsicle');
这行得通,但是我必须在每个加载的文件中都这样做popsicle
。我想他们只是在Promise
给window
。
我如何确保window.Promise
始终使用webpack进行定义?