Webpack Babel Runtime Tansform是否在IE中提供对象、承诺和符号支持?
以下代码包括动态导入测试、Webpack Babel Runtime Tansform是否在IE中提供对象、承诺和符号支持?,webpack,ecmascript-6,es6-promise,babeljs,es6-modules,Webpack,Ecmascript 6,Es6 Promise,Babeljs,Es6 Modules,以下代码包括动态导入测试、对象测试、符号和承诺测试 import $ from 'jquery'; $('#TestDynamicImport-Button').on('click', () => { loadModule(); }); async function loadModule() { const MODULE = await import('./TestModules/TestJsModule'); console.log(MODULE.TEST1); }
对象
测试、符号
和承诺
测试
import $ from 'jquery';
$('#TestDynamicImport-Button').on('click', () => {
loadModule();
});
async function loadModule() {
const MODULE = await import('./TestModules/TestJsModule');
console.log(MODULE.TEST1);
}
// Promise test
let promise1 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, 'foo');
});
console.log('Promise Test: ' + promise1);
// Symbol test
let obj = {};
obj[Symbol("a")] = "a";
obj[Symbol.for("b")] = "b";
obj["c"] = "c";
obj.d = "d";
for (let i in obj) {
console.log(i); // logs "c" and "d"
}
// Object test
let obj1 = { foo: "bar", baz: 42 };
let map = new Map(Object.entries(obj1));
console.log(map); // Map { foo: "bar", baz: 42 }
如您所知,Promise
、Object
和Symbol
在IE中不受支持,要提供这种支持,需要polyfill。最近,为了提供动态导入支持(import()
)和asyc
/wait
支持,我添加了语法动态导入
和转换运行时
babel插件(以下代码是网页包配置的一部分):
虽然在本例中我没有使用polyfill,但在动态导入之前,IE控制台中没有任何错误(换句话说,对象
,承诺
和符号
在IE中工作,这要感谢转换运行时
):
但是,如果要尝试dinamic导入(在本例中,通过单击按钮),
错误:“ReferenceError:未定义承诺”
将发生错误
(定義されていません代码>表示未定义
)
你怎么解释呢<代码>承诺
在动态导入之前工作正常
let promise1 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, 'foo');
});
错误用小写字母p表示
promise
。您的代码中可能有输入错误。@一个更好的奥利弗,我在这里犯了错误,在问题中,而不是在代码中。我在问题的末尾添加了图片。好的,但这实际上是一个不同的错误。导入未成功,您没有处理异常。似乎TestJsModule
与Promise
@一个更好的奥利弗有一个问题,因为一切都在Chrome中工作,我得出结论,这是IE方面的问题。没有多边形填充我能解决它吗?
let promise1 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, 'foo');
});