モジュールバンドルとしてWebpackを使用するReactプロジェクトと、次の設定を使用してbabel-loader
をES5に変換するプロジェクトがあります。
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: [
{
loader: "babel-loader"
}
]
}
]
},
オプションは、スタンドアロン.babelrc
ファイルで設定されます。
Babel 6.13. はECMAScriptモジュールをサポートします。つまり、ECMAScriptモジュールを最初にCommonJSモジュールに変換する必要はありません。この動作を得るために、ドキュメントでは、.babelrc
でこの設定を使用する必要があると記載されています。
{
presets: [["es2015", { "modules": false }], "react"]
}
ただし、この設定を使用してWebpackを実行しようとすると、次のエラーが返されます。
$ ./node_modules/.bin/webpack
/home/d4nyll/foo/bar/webpack.config.babel.js:1
(function (exports, require, module, __filename, __dirname) { import webpack from 'webpack';
^^^^^^
SyntaxError: Unexpected token import
これは、babel-loader
がwebpack.config.babel.js
に作用しないため、import
キーワードを認識しないためだと推測しています。 { "modules": false }
を削除してもエラーは表示されませんが、その機能が必要です。 Babelにwebpack.config.babel.js
を認識させるにはどうすればよいですか?
次は私のために働いた。
.babelrc
を次のように設定します。
{
"presets": ["es2015"]
}
.babelrc
設定はwebpack.config.babel.js
ファイルに適用されます。
次に、Webpack構成を変更して、アプリケーションコードに適用するオプションを含めます。
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: [
{
loader: "babel-loader",
options: {
"presets": [["es2015", {"modules": false}], "react"]
}
}
]
}
]
},
おそらく知っているように、強調するために:あなたのエラー
`Unexpected token import` in `webpack.config.babel.js`...
持っているnothingは、あなたのwebpack.config.babel.js
だけで、あなたが構築しているものとは関係ありません。その名前にもかかわらず、ES6はいくつかのことを確認しないと機能しません。
1) 必要ありませんwebpack.config.js
、プロジェクトにwebpack.config.babel.js
がある場合。
2)package.json
で、(1)が成り立つためにWebpackバージョン3以降を使用していることを確認してください
3)少なくともenv
または.babelrc
を含むes2015
があることを確認してください
{ "presets": ["env"] }
4)次の2つがインストールされていることを確認してください
npm install babel-cli --save-dev
npm install babel-preset-env --save-dev
babel-preset-es2015
に応じてそれぞれ.babelrc
。 ( こちらをご覧くださいenv
が間違いなく少し涼しい理由。)
import
が焼き付けられているWebpack 2.6+を使用している場合、このbabelプラグインを使用していることを確認してください: https://www.npmjs.com/package/babel-plugin-syntax-dynamic-インポート