为什么Vue项目用Babel编译后出现regeneratorRuntime未定义错误?
在Vue组件里用了async/await写法,按照教程配置了bable.config.js,但打包时报错‘regeneratorRuntime is not defined’。已经装了@babel/runtime-corejs3和regenerator-runtime,但问题依旧。
这是我的组件代码:
{{ result }}
export default {
data() {
return { result: '' }
},
async created() {
this.result = await somePromise()
}
}
babel配置里用了preset-env和runtimeHelpers,但没加@babel/plugin-transform-runtime插件。这种情况下应该怎么正确配置?
安装依赖:
npm install --save regenerator-runtime
npm install --save @babel/runtime-corejs3
修改babel.config.js:
module.exports = {
presets: [
['@babel/preset-env', {
useBuiltIns: 'usage',
corejs: 3
}]
],
plugins: [
['@babel/plugin-transform-runtime', {
corejs: 3
}]
]
}
在入口文件main.js顶部加:
import "regenerator-runtime/runtime
@babel/plugin-transform-runtime这个插件,并且在 Babel 配置里加上它。直接说解决方案吧。先把插件装上:
然后在你的
babel.config.js里面加上这个插件的配置,像这样:重点是
regenerator: true,这个选项会确保 Babel 正确注入regeneratorRuntime。如果你之前没加这个选项,就会出现你说的那个错误。最后别忘了重启下构建工具,重新打包试试。应该就没问题了。说实话,Babel 的配置有时候真让人头大,不过这种坑踩过一次就记得死死的了。