web-dev-qa-db-ja.com

Babel 6 transform-runtime:$ exportは関数ではありません

Babelのtransform-runtimeを組み込み、コードをIE9と互換性のあるものにしようとしています。しかし、それを統合して以来、コードはChromeでも実行されません。エラーが表示されるUncaught TypeError: $export is not a function on es6.object.define-property.js:3。 .babelrcに「transform-runtime」行がなければ、すべてが正常に実行されます。何か案は?

これが私の.babelrc

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

と私 webpack.config.js

var webpack = require('webpack');

var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common.js');

module.exports = {
  entry: {
    EventAdmin: './src/event_admin',
    EventRender: './src/event_render'
  },
  output: {
    path: '../public/js2',
    filename: '[name].js' // Template based on keys in entry above
  },
  externals: {
    // require("jquery") is external and available
    //  on the global var jQuery
    'jquery': 'jQuery'
  },
  plugins: [commonsPlugin],
  devtool: 'source-map',
  module: {
    loaders: [
      { test: /\.css$/, loader: 'style-loader!css-loader' },
      {
        test: /\.js$/,
        loader: 'babel-loader'
      },
    ]
  }
};

enter image description here

38
Ted Avery

exclude: /node_modules/の後にloader: 'babel-loader'を追加してみてください。 node_modulesを除外せずにランタイムトランスフォーマーを実行しようとすると、同じ問題が発生しました。ただし、根本的な問題については知りません。

46
Pierre Wahlgren

こんにちは、私は同じ問題を抱えており、最終的に私のために働く解決策を見つけました。見る:

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',
        ],
     },
  },
]

「transform-runtime」の部分を参照してください。これがお役に立てば幸いです。

23
Carlos Galarza

documentation の推奨事項に従って、「exclude」を「include」に置き換えることができます。

これは私のために働いた。

{ "test": /\.js/, "loader": "babel", "include": [path.resolve(__dirname, './src')] } .

7
André Moraes

最初にbabel-plugin-transform-runtimeをインストールしてから、私のように使用する必要があります。

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

その後、excludeキーをwebpack構成ファイル内のbabel-loaderに追加する必要があります。

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

注意:/(node_modules\/)//node_modules/ではなく/node_modules\//と書いてください。奇妙ですが、この方法は機能します。

4
AmerllicA

Babel 6はBabel 5のようにrequire('something')require('something').defaultに変換しなくなったため、core-jsファイルをBabel 6で実行すると問題が発生するようです。私もこのプラグインでそれを実行しようとしました https://www.npmjs.com/package/babel-plugin-add-module-exports 文を適切に。 excludeプロパティを次のように設定することにより、最終的にcore-jsおよびさまざまなBabel関連ファイルをbabel-loaderによって処理されないように除外する必要がありました。

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

サイドノートとして、Babel 6に変換してからnode_modulesを再インストールしていませんでした。理由。

2
Resist Design

Webpackを使用している場合は、node_modulesフォルダーをwebpack構成ファイルに以下を含めないでください。

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']
        }
      }
    }
  ]
}
2
ajimix

install babel-runtimeもありますか?

両方をインストールし、.babelrcにプラグインを追加したところ、うまくいきました。

1
RMontes13