如何使用 laravel 混合支持 Internet Explorer 11 中的 Promises?
how to support Promises in Internet Explorer 11 using laravel mix?
我正在尝试弄清楚如何让 laravel-mix
将 ES6 javascript 代码转换为 javascript Internet Explorer 11 可以使用的代码。
我设置了一个全新的 laravel 9 项目并进行了以下更改:
resources/js/app.js
let promise = new Promise(function(resolve, reject) {
setTimeout(() => resolve("done!"), 1000);
});
promise.then(
result => alert(result),
);
添加到 package.json
"browserslist": [
"IE 11"
]
添加到 resources/views/welcome.blade.php
<script type="text/JavaScript" src="{{ mix('js/app.js') }}"></script>
终于
npm install
npx mix
php artisan serve
代码在 Chromium 中运行良好,但在 Internet Explorer 中运行失败并出现错误 'Promise' is undefined
。
如何让 laravel-mix 包含 Promise polyfill?
如果您不介意跳过与 laravel-mix 的集成,您可以将其添加到 blade view/layout:
<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"></script>
否则,您可以尝试添加 resources/js/bootstrap.js
(未测试):
window.Promise = require('promise-polyfill').default;
您还可以使用混合扩展程序,例如 laravel-mix-polyfill
let mix = require('laravel-mix');
require('laravel-mix-polyfill');
mix.js('resources/js/app.js', 'public/js')
.polyfill({
enabled: true,
useBuiltIns: "usage",
targets: "firefox 50, IE 11"
});
我正在尝试弄清楚如何让 laravel-mix
将 ES6 javascript 代码转换为 javascript Internet Explorer 11 可以使用的代码。
我设置了一个全新的 laravel 9 项目并进行了以下更改:
resources/js/app.js
let promise = new Promise(function(resolve, reject) {
setTimeout(() => resolve("done!"), 1000);
});
promise.then(
result => alert(result),
);
添加到 package.json
"browserslist": [
"IE 11"
]
添加到 resources/views/welcome.blade.php
<script type="text/JavaScript" src="{{ mix('js/app.js') }}"></script>
终于
npm install
npx mix
php artisan serve
代码在 Chromium 中运行良好,但在 Internet Explorer 中运行失败并出现错误 'Promise' is undefined
。
如何让 laravel-mix 包含 Promise polyfill?
如果您不介意跳过与 laravel-mix 的集成,您可以将其添加到 blade view/layout:
<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"></script>
否则,您可以尝试添加 resources/js/bootstrap.js
(未测试):
window.Promise = require('promise-polyfill').default;
您还可以使用混合扩展程序,例如 laravel-mix-polyfill
let mix = require('laravel-mix');
require('laravel-mix-polyfill');
mix.js('resources/js/app.js', 'public/js')
.polyfill({
enabled: true,
useBuiltIns: "usage",
targets: "firefox 50, IE 11"
});