babel ES7 Async - 没有定义regeneratorRuntime

时间:2016-06-27 14:25:34

标签: gulp browserify babel 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}`));
});

这是我的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

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

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

1 个答案:

答案 0 :(得分:4)

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

Babel 6 regeneratorRuntime is not defined with async/await