Sto provando a compilare un'app Koa e Koa ha asserzioni che controllano che io stia passando le funzioni del generatore come middleware. Tuttavia, vorrei compilare il mio codice lato server da ES7 usando Babel, per coerenza con il front-end.Babel può compilare "node - harmony" invece di ES5?
È possibile scegliere come target l'armonia del nodo invece di ES5? Non vedo nulla di promettente nelle opzioni, ma scegliere un target sembra una cosa standard da poter fare con un compilatore. di
aggiornamento
Blacklisting Babel regenerator transform sembra non avere alcun effetto, anche se sto usando stage: 1
.
index.js:
require("babel/register")({
sourceMaps: "inline",
stage: 1,
blacklist: [ "regenerator" ],
optional: [ "asyncToGenerator" ]
});
var app = require("./src/server");
app.listen(process.env.port || 3000);
src/server.js:
import koa from "koa";
import router from "koa-router";
router.get("/", function *(next) {
this.body = "Hi!";
});
let app = koa();
app.use(router());
export default app;
Execute: node --harmony index.js
node --version
v0.12.4
rigeneratore Blacklisting ha avuto alcun effetto, anche se ho sto usando 'stage: 1'. La cosa strana è che se eseguo Babel da CLI invece di usare l'injector richiesto, vedo che Babel sta solo compilando la mia fonte, non Koa o altri node_modules. Questo è buono, quei moduli dovrebbero avere i loro generatori intatti, ma quando eseguo la versione compilata, ottengo ancora lo stesso errore di asserzione. –
Ti dispiace se ti chiedo cosa ti fa dire che non ha alcun effetto? Come stai effettivamente testando se è stato caricato come generatore reale o transpiled? Qual è l'affermazione che hai menzionato? – loganfsmyth
Chiedo perché, per quanto ne so, i generatori transpiled 'rigeneratori 'dovrebbero ancora passare il controllo'' GeneratorFunction '== fn.constructor.name' in Koa. – loganfsmyth