首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能和webpack多履行诺言?

我怎样才能和webpack多履行诺言?
EN

Stack Overflow用户
提问于 2016-08-16 02:06:57
回答 9查看 57.5K关注 0票数 45

我正在用webpack捆绑我的JavaScript。我依赖于像popsicle这样使用any-promise的模块。

下面是我的代码:

代码语言:javascript
复制
var popsicle = require('popsicle');
popsicle.get('/').then(function() {
  console.log('loaded URL');
});

这在Promise可用的浏览器中工作得很好,但是IE 11 does not provide Promise。因此,我想使用es6-promise作为多边形填充。

我尝试向我的webpack.config.js添加一个显式的ProvidePlugin

代码语言:javascript
复制
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')

我尝试显式地附加一个全局变量:

代码语言:javascript
复制
global.Promise = global.Promise || require('es6-promise');

但是IE11给出了一个不同的错误:Object doesn't support this action

我还尝试显式注册es6-promise:

代码语言:javascript
复制
require('any-promise/register/es6-promise');
var popsicle = require('popsicle');

这是可行的,但我必须在加载popsicle的每个文件中执行此操作。我只想将Promise附加到window

使用webpack,我如何确保始终定义window.Promise window.Promise

Full repo demo here

EN

回答 9

Stack Overflow用户

发布于 2016-12-09 22:47:58

对于使用巴别塔和webpack的人:你可以使用babel-polyfill

只需执行npm install --save "babel-polyfill",然后将其添加为webpack.config.js中的入口点:

代码语言:javascript
复制
module.exports = {
   entry: ['babel-polyfill', './app/js']
};

或者,您可以安装core-js并只引用您需要的模块,而不是使用整个babel-polyfill。

代码语言:javascript
复制
module.exports = {
   entry: ['core-js/stable/promise', './app/js']
};
票数 69
EN

Stack Overflow用户

发布于 2016-10-03 12:37:01

对我来说很有效的选择。es6-promise-promise被设计为直接包含在webpack的构建中。所以:

代码语言:javascript
复制
plugins: [
  new webpack.ProvidePlugin({
    Promise: 'es6-promise-promise'
  })
]
票数 20
EN

Stack Overflow用户

发布于 2018-03-16 18:46:46

使用最近添加的ProvidePluginproperty功能的@asiniy答案的更新和简明版本,而不需要引用es6-promise-promise

代码语言:javascript
复制
    new webpack.ProvidePlugin({
        Promise: ['es6-promise', 'Promise']
    })

为了让它起作用,不要忘了添加es6-promise作为您想要多填充Promise的项目的依赖项。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38960490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档