web-dev-qa-db-ja.com

babel ES7 Async-regeneratorRuntimeが定義されていません

プロジェクトでbrowserify + gulp + babelを使用していますが、ES7機能に問題があります。これらは私がインストールしたものです:

そして、これは私の不満のコードです:

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}`));
});

これは私の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'));

これを試すとエラーが発生します。

キャッチされていないReferenceError:regeneratorRuntimeが定義されていません

importの代わりにrequireを使用しても機能しません。質問のほとんどはbrowserifyではなくWebpackを使用しており、他のアプローチは私には機能しなかったので、どうすればよいか教えていただければ幸いです。

もう1つ質問があります。ご覧のとおり、babel-preset-es2015とbabel-preset-es2016の両方をインストールしましたが、どちらも使用しています。 es2015プラグインを削除しても、ES6機能を引き続き使用できますか?また、babel-preset-stage-も含めました。これは、ES7の実験的な機能用です。実際にはbabel-preset-es2016は何ですか?

12
modernator

同じエラーが発生し、「babel-plugin-transform-runtime」を使用して修正します。これもあなたのために働くことを願っています。

Babel 6 regeneratorRuntimeはasync/awaitで定義されていません

4
oahehc