错误发生时各依赖包的版本
1\. @babel-core 7.9.0
2\. webpack 4.42
3\. @babel/preset-env 7.9.0
错误发生时webpack配置
{
test: /\.jsx?$/,
exclude: /node_modules/,
include: path.resolve(__dirname, './src'),
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', '@babel/preset-react']
}
}
}
错误发生场景(原因)
async function() {
await ....
}
解决方案一
options: {
presets: [
['@babel/preset-env', {
targets: { // 制定浏览器环境或者配置是否支持esmodule
esmodules: true // 优先级>浏览器配置
}
}], '@babel/preset-react']
}
解决方案二
-
第一步
npm install core-js@3
-
第二步
{ options: {
presets: [ ['@babel/preset-env', {
useBuiltIns: 'usage', //不能是“entry”
corejs: 3
}], '@babel/preset-react' ]
}
}
方案二解析
- 在babel7.4.0之前,使用@babel/polyfill解决regenerator-runtime/runtime 和 core-js/stable的polyfill问题。
- 在babel7.4.0之后,将polyfill的内容直接包含进@babel/core@3之中。默认不开启。
- 使用@babel/preset-env进行解析时,默认不引入任何的polyfill , 需要手动开启。通过
useBuiltIns: 'usage'开启加载polyfill。加载来源是core-js@3,设置corejs: 3