babel ES7 Async - 没有定义regeneratorRuntime

mod*_*tor 10 babel browserify gulp ecmascript-7

我在我的项目中使用了browserify + gulp + babel,并且在ES7功能方面存在问题.这些是我安装的:

  • babel-plugin-transform-async-to-generator@6.8.0
  • babel-plugin-transform-decorators-legacy@1.3.4 //使用装饰器
  • babel-polyfill@6.9.1
  • babel-preset-es2015@6.9.0
  • babel-preset-es2016@6.11.0
  • babel-preset-stage-0@6.5.0
  • babelify@7.3.0
  • browserify@13.0.1
  • 一饮而尽,sourcemaps
  • 乙烯基 - 缓冲
  • 乙烯基 - 源极 - 流

这是我的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}`));
});
Run Code Online (Sandbox Code Playgroud)

这是我的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'));
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,得到一个错误:

未捕获的ReferenceError:未定义regeneratorRuntime

使用require而不是import也不起作用.大多数问题都是使用Webpack,而不是浏览器,其他方法对我没有用,所以非常感谢告诉我该怎么做.

我还有一个问题,你可以看到,我安装了babel-preset-es2015和babel-preset-es2016,两者都在使用.如果我删除es2015插件,我还可以使用ES6功能吗?而且我还包括babel-preset-stage-0,我知道这是实验性的ES7功能.实际上babel-preset-es2016得到了什么?

oah*_*ehc 4

我有同样的错误并使用“babel-plugin-transform-runtime”修复它。希望这也对你有用。

Babel 6 regeneratorRuntime 未定义 async/await