Je ne suis pas en mesure de configurer correctement babel pour l'utilisation de async/wait.
J'utilise babel 7 et webpack 4.
Je ne veux pas utiliser babel-polyfill si possible!
Mon fichier babelrc:
{
"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();
Et erreur:
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
La dernière documentation ici est assez claire: https://babeljs.io/docs/en/next/babel-plugin-transform-runtime
Ce qui a fonctionné pour moi, c'est d'installer les deux packages pour la construction et pour l'exécution (le script final pour le navigateur):
npm install --save-dev @babel/plugin-transform-runtime
npm install --save @babel/runtime
Dans le tableau de plugins de ma configuration de webpack, je viens d'ajouter "@ babel/plugin-transform-runtime" sans aucune option. (Veuillez également consulter la documentation liée ci-dessus, car certaines options (que vous pourriez trouver dans des didacticiels ou des réponses plus anciens) ont été supprimées.)
plugins: [
'@babel/plugin-transform-runtime'
]
Je peux maintenant utiliser des fonctions asynchrones sans erreurs, et cela n'ajoute pas beaucoup de code dans la version de production.
Vous avez également besoin du transform-runtime
plugin, donc votre .babelrc devrait être prêt:
{
"presets": [[
"@babel/env",
{"modules": false}
]],
"plugins": [
"syntax-dynamic-import",
"transform-runtime",
"transform-async-to-generator"
]
}
Notez que vous devrez également npm install --save-dev transform-runtime