SweetAlert2在IE 11上不起作用,未定义Promise

时间:2019-04-08 14:25:11

标签: javascript internet-explorer promise sweetalert2

我正在使用SweetAlert2,在IE 11上会引发异常:

  

此软件包需要一个Promise库,请添加垫片以   在此浏览器中启用它(请参阅:   https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support

因为IE 11不支持Promises,所以需要手动添加。

我正在像这样使用蓝鸟:

const Promise = require('bluebird');
const Swal = require('sweetalert2');

Swal.fire(...)
...

但是,sweetalert的支票还是没有通过:

..
  if (typeof Promise === 'undefined') {
    error('This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)');
  }
..

如何解决?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法修复它:

window.Promise = require('bluebird');

这会将Promise加载为窗口的全局变量,而不是像const那样加载文件。

我不确定您的文件结构如何,但是如果您有一个加载所有依赖项的文件,则只需将上面的行添加到将在其他脚本之前调用的脚本即可。

例如:

// bootstrap.js
window.Promise = require('bluebird');
window.Swal = require('sweetalert2');

// app.js
require('./bootstrap');
Swal.fire(...);

答案 1 :(得分:1)

对于那些在页面中直接引用Sweetalert2的用户:

也可以通过在Sweetalert2 lib之后包括以下核心js lib来解决此问题

<script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/core.js"></script>