Webpack eslint-loader игнорирует парсер .eslintrc
У меня проблема с webpack
в частности eslint-loader
.
У меня есть файл JS с таким кодом:
class Test {
MyProp = "MyValue"
}
export default Test;
Сначала, когда я позвонил npx eslint .
, Я получил:
D:\repro\src\main\js\index.js
3:12 error Parsing error: Unexpected token =
Я где-то читал, мне нужно было добавить "parser": "babel-eslint"
в.eslintrc по какой-то причине.
Это устранило проблему с npx eslint
, но у меня все еще проблема с npx webpack
:
ERROR in ./src/main/js/index.js 3:11
Module parse failed: Unexpected token (3:11)
File was processed with these loaders:
* ./node_modules/eslint-loader/dist/cjs.js
Я, должно быть, где-то забыл какую-то конфигурацию, но не могу найти где.
Чтобы воспроизвести это, рассмотрите это репо:
https://github.com/slacaze/webpack-eslint-issue
npm install
npx eslint
=> Нет ошибки (.eslintrc.json используетbabel-eslint
как парсер)npx webpack
=> Ошибка, как указано выше
1 ответ
Проблема не в том, что ваш eslint дает сбой, а в том, что этот источник нельзя упаковать, не запустив его через babel. Вам нужно использовать babel-loader для фактического преобразования вашего кода, estlint-loader просто проверяет ваш синтаксис.
Во-первых, вам нужно добавить babel-loader, как показано здесь: https://webpack.js.org/loaders/babel-loader/
Установить:
npm install -D babel-loader @babel/core @babel/preset-env webpack
Затем настройте (помните, что порядок снизу вверх, поместите это над записью eslint):
{
test: /\.?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
},
Кроме того, classProperties не включены по умолчанию, поэтому вам это тоже понадобится: https://babeljs.io/docs/en/babel-plugin-proposal-class-properties
Установить:
npm install --save-dev @babel/plugin-proposal-class-properties
Настройте, добавив.babelrc:
{
"plugins": ["@babel/plugin-proposal-class-properties"]
}
Как в этой обновленной версии: