Webpack eslint-loader игнорирует парсер .eslintr c - PullRequest
0 голосов
/ 21 апреля 2020

У меня проблема с 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" к .eslintr c.

Это решило проблему с 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

  1. npm install
  2. npx eslint => Нет ошибок (.eslintr c. json использует babel-eslint в качестве синтаксического анализатора)
  3. npx webpack => Ошибка, как указано выше

1 Ответ

1 голос
/ 21 апреля 2020

Проблема не в том, что ваш 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

Настроить, добавив .babelr c:

{
    "plugins": ["@babel/plugin-proposal-class-properties"]
}

Как и в этой обновленной версии:

https://github.com/dpwrussell/webpack-eslint-issue

...