Babel 6 regeneratorRuntime is not defined

前端 未结 30 1857
暖寄归人
暖寄归人 2020-11-22 03:49

I\'m trying to use async, await from scratch on Babel 6, but I\'m getting regeneratorRuntime is not defined.

.babelrc file

{
    \"presets\": [ \"es2         


        
相关标签:
30条回答
  • 2020-11-22 04:33

    My simple solution:

    npm install --save-dev babel-plugin-transform-runtime
    npm install --save-dev babel-plugin-transform-async-to-generator
    

    .babelrc

    {
      "presets": [
        ["latest", {
          "es2015": {
            "loose": true
          }
        }],
        "react",
        "stage-0"
      ],
      "plugins": [
        "transform-runtime",
        "transform-async-to-generator"
      ]
    }
    
    0 讨论(0)
  • 2020-11-22 04:33

    This solution is out of date.

    I found the solution in the youtube comments of this video https://www.youtube.com/watch?v=iWUR04B42Hc&lc=Ugyq8UJq-OyOzsKIIrB4AaABAg

    This should direct to the correct comment. Much props to "beth w" for finding the solution.

    Beth W 3 months ago (edited)
    Another change I had to make in 2019 - babel no longer uses the stage-0 preset as of v7 apparently, so at 26:15 instead of 'npm install --save-dev babel-polyfill babel-preset-stage-0', I had to do:

    npm install --save @babel/polyfill

    Which covers both of the older options. Then, in the entry point for the app I > included '@babel/polyfill', and in the query presets I left it as-is. So the webpack config ends up looking like:

    const path = require('path');
    module.exports = {
        entry: {
            app: ['@babel/polyfill', './src/app.js']
        },
        output: {
            path: path.resolve(__dirname, 'build'),
            filename: 'app.bundle.js'
        },
        mode: 'development',
        module: {
            rules: [{
                test: /\.js?$/,
                exclude: /node_modules/,
                loader: 'babel-loader',
                query: {
                    presets: ['@babel/preset-env']
                }
            }]
        }
    }
    

    Hope that helps someone!

    0 讨论(0)
  • 2020-11-22 04:34

    Babel 7 Users

    I had some trouble getting around this since most information was for prior babel versions. For Babel 7, install these two dependencies:

    npm install --save @babel/runtime 
    npm install --save-dev @babel/plugin-transform-runtime
    

    And, in .babelrc, add:

    {
        "presets": ["@babel/preset-env"],
        "plugins": [
            ["@babel/transform-runtime"]
        ]
    }
    
    0 讨论(0)
  • 2020-11-22 04:35

    As of Oct 2019 this worked for me:

    Add this to the preset.

     "presets": [
          "@babel/preset-env"
        ]
    

    Then install regenerator-runtime using npm.

    npm i regenerator-runtime
    

    And then in your main file use: (this import is used only once)

    import "regenerator-runtime/runtime";
    

    This is will enable you to use async awaits in your file and remove the regenerator error

    0 讨论(0)
  • 2020-11-22 04:35

    I get this error using gulp with rollup when I tried to use ES6 generators:

    gulp.task('scripts', () => {
      return rollup({
        entry: './app/scripts/main.js',
        format: "iife",
        sourceMap: true,
        plugins: [babel({
          exclude: 'node_modules/**',
          "presets": [
            [
              "es2015-rollup"
            ]
          ],
          "plugins": [
            "external-helpers"
          ]
        }),
        includePaths({
          include: {},
          paths: ['./app/scripts'],
          external: [],
          extensions: ['.js']
        })]
      })
    
      .pipe(source('app.js'))
      .pipe(buffer())
      .pipe(sourcemaps.init({
        loadMaps: true
      }))
      .pipe(sourcemaps.write('.'))
      .pipe(gulp.dest('.tmp/scripts'))
      .pipe(reload({ stream: true }));
    });
    

    I may case the solution was to include babel-polyfill as bower component:

    bower install babel-polyfill --save
    

    and add it as dependency in index.html:

    <script src="/bower_components/babel-polyfill/browser-polyfill.js"></script>
    
    0 讨论(0)
  • 2020-11-22 04:37

    Update your .babelrc file according to the following examples, it will work.

    If you are using @babel/preset-env package

    {
      "presets": [
        [
          "@babel/preset-env", {
            "targets": {
              "node": "current"
            }
          }
        ]
      ]
    }
    or if you are using babel-preset-env package
    
    {
      "presets": [
        [
          "env", {
            "targets": {
              "node": "current"
            }
          }
        ]
      ]
    }
    
    0 讨论(0)
提交回复
热议问题