У меня есть простая структура файлов для моих файлов JS:Webpack бросает странные ошибки синтаксиса в JS файл
bundle.js
src
|
-- main.js
-- forms
|
-- forms.js
Моего main.js файл выглядит следующим образом:
let forms = require('./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 и в файл 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']
}
}
],
}
};
ли столпотворение-загрузчик не корректно работать на файле forms.js или что-то? Я не исключил файл или его папку в файле конфигурации или что-то еще, поэтому почему ошибка синтаксиса? Я знаю, что это действительно JS, поскольку я написал его в другом проекте, и он работал нормально.
Btw, import
в файле main.js также не работает, в то время как другие функции ES6 работают? Имеет ли это какое-либо отношение к этому?
Спасибо! Я просто не понимаю, что вы имеете в виду с '.babelrc'. Где я могу найти этот файл? Я npm установил плагин преобразования свойств класса и добавил предустановку stage-2 в webpack.config.js под загрузчиком babel, но он говорит: «Ошибка сборки модуля: Ошибка: не удалось найти предустановленный« этап-2 »относительно каталога '. –
Я обновил ответ - если вы установили преобразование, включите его в качестве плагина, если вы установили предустановку stage2, включите его как пресет. Попробуй это сейчас. –
Хорошо, теперь это работает, спасибо! Я просто npm установил свойства класса и изменил запрос babel-loader в webpack.config.js :) –