Webpack 使用babel再生器运行时的异步/等待在ie11中不起作用

Webpack 使用babel再生器运行时的异步/等待在ie11中不起作用,webpack,babeljs,internet-explorer-11,babel-polyfill,babel-preset-env,Webpack,Babeljs,Internet Explorer 11,Babel Polyfill,Babel Preset Env,我有一个模板应用程序,我想与ie11一起工作,为此我使用webpack+babel。 出于某种原因,我忽略了,我的JS在ie11中根本不起作用,即使我在配置中将它设置为目标。为了测试它,我在互联网上使用ie11,但由于我在MacOS上,所以无法访问堆栈错误 我错过了什么 有关详细信息,请参阅源代码: 网站: app.js 从“再生器运行时”导入再生器运行时; 异步函数app(){ console.log('应用程序入口点') 常量模板=document.getElementById('app')

我有一个模板应用程序,我想与ie11一起工作,为此我使用webpack+babel。 出于某种原因,我忽略了,我的JS在ie11中根本不起作用,即使我在配置中将它设置为目标。为了测试它,我在互联网上使用ie11,但由于我在MacOS上,所以无法访问堆栈错误

我错过了什么

有关详细信息,请参阅源代码:

网站:

app.js

从“再生器运行时”导入再生器运行时;
异步函数app(){
console.log('应用程序入口点')
常量模板=document.getElementById('app')
等待新的承诺(r=>setTimeout(()=>r(),2500))
template.innerHTML=`
异步/awat测试
`
console.log('应用程序已完成')
};
app();
webpack.config.json

const path=require('path');
const HtmlWebpackPlugin=require('html-webpack-plugin');
module.exports={
模式:"发展",,
条目:['core-js/stable','./src/app.js'],
输出:{
path:path.resolve(uu dirname,'./dist'),
文件名:“app.js”,
},
开发服务器:{
公共路径:“./src/”,
contentBase:path.join(uu dirname,'dist'),
是的,
港口:9000,
},
插件:[
新的HtmlWebpackPlugin({//将使用app.js生成html文件
//请参见此处的插件:https://webpack.js.org/plugins/html-webpack-plugin/
模板:'./src/index.html',
文件名:'./index.html'
})
],
模块:{
规则:[//让webpack知道如何处理.xyz文件的一组规则
{
测试:/\.m?js$/,//来源:https://webpack.js.org/loaders/babel-loader/
排除:/(节点模块|鲍尔组件)/,
使用:{
加载器:“巴别塔加载器”,
}
}
],
},
};
babel.config.js

//babel.config.js
module.exports=api=>{
返回{
插件:[
“@babel/plugin转换运行时”,
],
预设:[
[
“@babel/preset env”,
{
useBuiltIns:“条目”,
corejs:3,
//caller.target将与webpack中的目标选项相同
目标:api.caller(caller=>caller&&caller.target==“节点”)
?{node:“current”}
:{chrome:“58”,即:“11”}
}
]
]
}
}
package.json

{
“名称”:“前端工作流”,
“版本”:“1.0.0”,
“说明”:“,
“main”:“src/app.js”,
“脚本”:{
“开发”:“npm运行清理和npm运行构建和网页包服务”,
“构建”:“网页包”,
“干净”:“rimraf./dist”
},
“作者”:“作者”,
“许可证”:“ISC”,
“依赖性”:{
“@babel/core”:“^7.12.17”,
“@babel/plugin转换运行时”:“^7.12.17”,
“@babel/preset env”:“^7.12.17”,
“巴别塔加载器”:“^8.2.2”,
“css加载器”:“^5.0.2”,
“html加载程序”:“^2.1.0”,
“html网页包插件”:“^5.2.0”,
“sass”:“^1.32.8”,
“sass加载程序”:“^11.0.1”,
“样式加载器”:“^2.0.0”,
“网页包”:“^5.23.0”,
“webpack cli”:“^4.5.0”,
网页包开发服务器“^3.11.2”
},
“依赖项”:{
“@babel/runtime”:“^7.6.3”,
“核心js”:“^3.3.2”
}
}

您提供了两种babel配置—一种嵌入在
webpack.config.js
中,另一种嵌入在
babel.config.js
中。非常确定
webpack.config.js
config将优先于babel配置。因此,只需将
选项
参数设置为网页配置中的
babel loader
,并坚持使用babel配置文件。

使用
网页
5,您可能必须为
es5
设置
目标
,以使其在IE11上工作,如下所示:

//webpack.config.js
module.exports={
// ...
目标:[“网络”、“es5”],
}

您好,我应用了您的修改(也更新了我帖子中的代码),但问题仍然存在,我不知道为什么。谢谢这至少解决了一个问题。在Q中,你只是说~“JS根本不起作用…”我不确定持续存在的问题到底是什么。如果您将示例代码缩减到测试babel是否为目标工作所需的最小值,这将有所帮助。也就是说,你的入口点应该看起来像,然后是minwebpak和babel conf。谢谢你的帮助,我修改了我的app.js并设置了一个
wait new Promise(r=>setTimeout(()=>r(),2500))
,然后再更改我的div的innerHTML。它在ie11上不起作用。(我更新了我帖子上的代码)有没有任何使用babel的模板网页项目的例子可以与ie11一起使用?对于async/awat和scss导入,Q中的代码仍然相当复杂。1.main.js不需要提及。2.不要对babel配置使用函数导出,只导出一个对象。3.您可能只需要去掉webpack SCSS加载器,将重点放在async/await上,这似乎是您面临的问题。你也不需要nullish和Coalessing插件——预设应该能处理这个问题。哦,天哪,我花了一个星期寻找解决方案,结果我在任何文档中都没有找到这个?