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'
},
]
}
};
exclude: /node_modules/
の後にloader: 'babel-loader'
を追加してみてください。 node_modulesを除外せずにランタイムトランスフォーマーを実行しようとすると、同じ問題が発生しました。ただし、根本的な問題については知りません。
こんにちは、私は同じ問題を抱えており、最終的に私のために働く解決策を見つけました。見る:
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」の部分を参照してください。これがお役に立てば幸いです。
documentation の推奨事項に従って、「exclude」を「include」に置き換えることができます。
これは私のために働いた。
{
"test": /\.js/,
"loader": "babel",
"include": [path.resolve(__dirname, './src')]
}
.
最初に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\//
と書いてください。奇妙ですが、この方法は機能します。
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
を再インストールしていませんでした。理由。
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']
}
}
}
]
}
install babel-runtimeもありますか?
両方をインストールし、.babelrcにプラグインを追加したところ、うまくいきました。