Babel 6 transform-runtime: $export is not a function

前端 未结 7 1041
一向
一向 2020-12-14 05:52

I\'m trying to incorporate Babel\'s transform-runtime to make my code compatible with IE9. But since integrating it, the code won\'t even run on Chrome. I get the error

相关标签:
7条回答
  • 2020-12-14 06:23

    For those of you who are using webpack, make sure to no include the node_modules folder with the following in your webpack configuration file:

    module: {
      rules: [
        {
          test: /\.js$/,
          // With this line, make sure you only include your javascript
          // source files
          include: [ path.resolve(__dirname, './src') ],
          use: {
            loader: 'babel-loader',
            options: {
              presets: ['env'],
              plugins: ['transform-runtime']
            }
          }
        }
      ]
    }
    
    0 讨论(0)
  • 2020-12-14 06:24

    You can try replace "exclude" by "include", following the recomendations from documentation.

    Try to prefer "include" when possible...

    This worked for me.

    {
      "test": /\.js/,
      "loader": "babel",
      "include": [path.resolve(__dirname, './src')]
    }
    
    0 讨论(0)
  • 2020-12-14 06:35

    At first you must installed babel-plugin-transform-runtime and then use it like me:

    {
      "presets": [
        "es2015",
        "react",
        "stage-0"
      ],
      "plugins": [
        "transform-runtime"
      ]
    }
    

    After it you must add exclude key to your babel-loader inside webpack configuration file:

    {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: [
            {
                loader: 'babel-loader',
            }
        ]
    }
    

    Attention: please write /node_modules/ not /(node_modules\/)/ or /node_modules\//, it's weird but this way works.

    0 讨论(0)
  • 2020-12-14 06:45

    It looks to be a problem with running core-js files through Babel 6 because Babel 6 no longer converts require('something') to require('something').default as Babel 5 did. I even tried running it through this plugin https://www.npmjs.com/package/babel-plugin-add-module-exports but no matter what I did, it wouldn't correct the require statements properly. I ultimately just had to exclude the core-js and various Babel related files from being processed by the babel-loader by setting the exclude property to this:

    [ /node_modules\/babel-/m, /node_modules\/core-js\//m, /node_modules\/regenerator-runtime\//m ]

    As a side note, I hadn't reinstalled my node_modules since converting to Babel 6 and that caused the same issue but for some other mysterious reason.

    0 讨论(0)
  • 2020-12-14 06:46

    Try adding exclude: /node_modules/ after loader: 'babel-loader'. I had the same problem when trying to run the runtime transformer without excluding node_modules. I am not aware of the underlying problem, though.

    0 讨论(0)
  • 2020-12-14 06:47

    Hello I have the same issue and finally found a solution that works for me. See:

    loaders: [
      {
        test: /.js/,
        loader: 'babel',
        query: {
          presets: ['es2015', 'es2017'],
          plugins: [
            ['transform-runtime', {
              helpers: false,
              polyfill: false,
              regenerator: true, }],
            'transform-es2015-destructuring',
            'transform-object-rest-spread',
            'transform-async-to-generator',
            ],
         },
      },
    ]
    

    See the 'transform-runtime' part. I hope this helps.

    0 讨论(0)
提交回复
热议问题