JS ファイルの単純なファイル構造があります。
bundle.js
src
|
-- main.js
-- forms
|
-- forms.js
私の main.js ファイルは次のようになります。
let forms = require('./forms/forms');
そして、forms.js ファイルは次のようになります。
export default class Forms {
test = () => {
alert('Forms.test() executed!');
}
}
var forms = new Forms();
forms.test();
これにより、次のエラーがスローされます。
Hash: a1ed74e596de181cec27
Version: webpack 1.14.0
Time: 21592ms
Asset Size Chunks Chunk Names
./static/js/bundle.js 277 kB 0 [emitted] main
+ 3 hidden modules
ERROR in ./static/js/src/forms/forms.js
Module build failed: SyntaxError: Unexpected token (4:6)
2 |
3 | export default class Forms {
> 4 | test = () => {
| ^
5 | alert('Forms.test() executed!');
6 | }
7 | }
@ ./static/js/src/main.js 4:12-36
test() メソッドが定義されている行について構文エラーが発生しています。babel-loader を追加すると、main.js ファイルで ES6 コードがトランスパイルされ、正しく実行されます。
私の webpack.config.js ファイルは次のようになります。
module.exports = {
entry: './static/js/src/main.js',
output: {
filename: './static/js/bundle.js'
},
watch: true,
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015']
}
}
],
}
};
babel-loader は forms.js ファイルなどで正しく動作しませんか? 構成ファイルなどでファイルまたはそのフォルダーを除外していないのに、なぜ構文エラーが発生するのですか? 別のプロジェクトで書いたので、これが有効なJSであることはわかっていますが、うまくいきました。
ところで、import
main.js ファイルも機能しませんが、他の ES6 機能は機能しますか? それはこれと何か関係がありますか?