I am not able to setup babel correctly for the usage of async / await.
I am using babel 7 and webpack 4.
I do not want to use babel-polyfill if possible!
My babelrc file:
{
"presets": [[
"@babel/env",
{"modules": false}
]],
"plugins": [
"syntax-dynamic-import",
"transform-async-to-generator"
]
}
Code:
async function init() {
const loaderData = await initLoader();
initCmp(loaderData)
.then(initApi(loaderData.key))
.catch();
}
init();
And Error:
refactor.main.js:18 Uncaught ReferenceError: regeneratorRuntime is not defined
at eval (refactor.main.js:18)
at eval (refactor.main.js:47)
at Object../client/refactor.main.js (cmp.bundle.js:312)
at __webpack_require__ (cmp.bundle.js:62)
at eval (main.js:6)
at Object../client/main.js (cmp.bundle.js:300)
at __webpack_require__ (cmp.bundle.js:62)
at cmp.bundle.js:179
at cmp.bundle.js:182
The latest documentation here is pretty clear: https://babeljs.io/docs/en/next/babel-plugin-transform-runtime
What worked for me is installing the two packages for build and for runtime (the final script for the browser):
npm install --save-dev @babel/plugin-transform-runtime
npm install --save @babel/runtime
In the plugin Array of my webpack configuration I just added '@babel/plugin-transform-runtime' without any options. (Please also have a look at the documentation linked above, since some options (that you might find in older tutorials or answers) have been removed.)
plugins: [
'@babel/plugin-transform-runtime'
]
I now can use async functions without errors, and it didn't add much code in the production build.
You also need the transform-runtime
plugin, so your .babelrc should ready:
{
"presets": [[
"@babel/env",
{"modules": false}
]],
"plugins": [
"syntax-dynamic-import",
"transform-runtime",
"transform-async-to-generator"
]
}
Note that you'll also need to npm install --save-dev transform-runtime
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With