Altro
Babel 6 regeneratorRuntime non è definito
Sto cercando di usare async, await da zero su Babel 6, ma sto ottenendo regeneratorRuntime non è definito.
File .babelrc
{
"presets": [ "es2015", "stage-0" ]
}
file package.json
"devDependencies": {
"babel-core": "^6.0.20",
"babel-preset-es2015": "^6.0.15",
"babel-preset-stage-0": "^6.0.15"
}
file .js
"use strict";
async function foo() {
await bar();
}
function bar() { }
exports.default = foo;
Usandolo normalmente senza l'async/await funziona bene. Qualche idea su cosa sto sbagliando?
569
3
babel-polyfill
è richiesto. Devi anche installarlo per far funzionare async/await.pacchetto.json
.babelrc
.js con async/await (codice di esempio)
Nel file di avvio
Se stai usando webpack devi metterlo come primo valore del tuo array
entry
nel tuo file di configurazione di webpack (di solitowebpack.config.js
), come da commento di @Cemen:Se vuoi eseguire i test con babel allora usa:
Oltre a polyfill, uso babel-plugin-transform-runtime. Il plugin è descritto come:
Esternalizzare i riferimenti agli helper e ai builtin, polifillando automaticamente il tuo codice senza inquinare i globali. Ma cosa significa in realtà? Fondamentalmente, è possibile utilizzare i built-in come Promise, Set, Symbol ecc. così come utilizzare tutte le funzionalità di Babel che richiedono un polyfill senza soluzione di continuità, senza inquinamento globale, rendendolo estremamente adatto alle librerie.
Include anche il supporto per async/await insieme ad altri built-in di ES 6.
In
.babelrc
, aggiungere il plugin runtimeIn alternativa, se non hai bisogno di tutti i moduli che
babel-polyfill
fornisce, puoi semplicemente specificarebabel-regenerator-runtime
nella tua configurazione di webpack:Quando si usa webpack-dev-server con HMR, questo riduce di molto il numero di file che deve compilare ad ogni compilazione. Questo modulo è installato come parte di
babel-polyfill
, quindi se lo hai già sei a posto, altrimenti puoi installarlo separatamente connpm i -D babel-regenerator-runtime
.