web-dev-qa-db-fra.com

babel ES7 Async - regénérateurRuntime n'est pas défini

J'utilise browserify + gulp + babel dans mon projet et j'ai des problèmes avec les fonctionnalités ES7. Voici ce que j'ai installé:

et voici mon code gulp:

gulp.task('build', () => {
    let buildPath;
    let destPath;

    buildPath = `./src`;
    destPath = `./dist`;

    return browserify(`${buildPath}/app.js`)
    .transform(babelify, { 
        presets: ["es2015", "es2016", "stage-0"],
        plugins: ["transform-decorators-legacy", "transform-async-to-generator"]
    })
    .bundle()
    .pipe(source('app.js'))
    .pipe(buffer())
    .pipe(sourcemaps.init({loadMaps: true}))
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest(`${destPath}`));
});

et voici mon code js:

import 'babel-polyfill';

// Async Functions
function wait(t) {
    return new Promise((r) => setTimeout(r, t));
}

async function asyncMania() {
    console.log('1');
    await wait(1000);
    console.log('2');
}

asyncMania().then(() => console.log('3'));

Lorsque j'essaie ceci, obtient une erreur:

Uncaught ReferenceError: régénérateurRuntime n'est pas défini

L'utilisation de require au lieu de import ne fonctionne pas non plus. La plupart des questions utilisent Webpack, pas browserify et d'autres approches n'ont pas été travaillées sur moi, il sera donc très apprécié de me dire comment faire.

Et j'ai une autre question, comme vous pouvez le voir, j'ai installé babel-preset-es2015 et babel-preset-es2016 à la fois, et les deux utilisent. Si je supprime le plugin es2015, puis-je quand même utiliser les fonctionnalités ES6? Et j'ai également inclus babel-preset-stage-, et comme je le sais, c'est pour les fonctionnalités expérimentales d'ES7. Qu'est-ce que babel-preset-es2016 a obtenu?

12
modernator

J'ai la même erreur et la corriger en utilisant "babel-plugin-transform-runtime". j'espère que cela fonctionne aussi pour vous.

Babel 6 rebuildatorRuntime n'est pas défini avec async/wait

4
oahehc