我正在使用 webpack 来捆绑我的 JavaScript。我依赖于类似的模块popsicle https://www.npmjs.com/package/popsicle哪个使用任何承诺 https://www.npmjs.com/package/any-promise.
这是我的代码:
var popsicle = require('popsicle');
popsicle.get('/').then(function() {
console.log('loaded URL');
});
这在浏览器中工作得很好Promise
是可用的,但是IE 11 不提供 Promise http://caniuse.com/#feat=promises。所以我想用es6-promise https://www.npmjs.com/package/es6-promise作为填充物。
我尝试添加一个明确的ProvidePlugin
to my 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
to window
.
我怎样才能确保window.Promise
总是使用 webpack 定义的?
完整的回购演示在这里 https://github.com/Wilfred/webpack_promise_demo.