Опция eslint-loader failOnError не работает с ts-loader и webpack-dev-server - PullRequest
1 голос
/ 05 мая 2020

Abstract

  • Для компиляции TypeScript с помощью webpack я использую ts-loader.
  • При использовании webpack-dev-server сообщение об ошибке может отображаться неправильно.
  • Репозиторий: https://github.com/pvcresin/eslint-ts-loader-error.

Проблемы

  • eslint-loader не прекращает компиляцию, и отображается ошибка ts-loader.
  • Ошибка ts-loader все еще старая, даже если код TS был переписан.

Процедура

1. Запустить dev-сервер: yarn start = webpack-dev-server --mode development

пакет. json

{
  "name": "eslint-ts-loader-error",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "start": "webpack-dev-server --mode development",
    "build": "webpack --mode production"
  },
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "2.30.0",
    "@typescript-eslint/parser": "2.30.0",
    "babel-loader": "8.0.6",
    "eslint": "6.8.0",
    "eslint-loader": "4.0.2",
    "ts-loader": "6.2.2",
    "typescript": "3.8.3",
    "webpack": "4.33.0",
    "webpack-cli": "3.3.4",
    "webpack-dev-server": "3.7.1"
  }
}

webpack.config. js

const path = require('path');

module.exports = {
  entry: './src/main.ts',
  output: {
    path: path.resolve(__dirname, 'dist/'),
    filename: '[name].js',
  },
  module: {
    rules: [
      {
        test: /\.(ts|tsx)$/,
        exclude: /node_modules/,
        use: [
          {
            loader: 'ts-loader',
          },
        ],
      },
      {
        test: /\.(ts|tsx)$/,
        enforce: 'pre',
        exclude: /node_modules/,
        use: [
          {
            loader: 'eslint-loader',
            options: {
              failOnError: true,
            },
          },
        ],
      },
    ],
  },
};

2. Отредактируйте и сохраните файл .ts.

main.ts

const a: string = 100;
console.log(a);

-> Ошибка: ts-loader (как и ожидалось)

ts-loader: Type '100' is not assignable to type 'string'.

3. Отредактируйте и сохраните файл .ts.

const a: string = 100;
// console.log(a);

-> Ошибка: eslint-loader, ts-loader (неожиданно)

eslint-loader: 'a' is assigned a value but never used  no-unused-vars
ts-loader: Type '100' is not assignable to type 'string'.

[Ожидается] Когда возникает ошибка в eslint-loader, процесс компиляции остановлен и ошибка ts-loader не отображается.

4. Отредактируйте и сохраните файл .ts.

const a: boolean = 100;
// console.log(a);

-> Ошибка: eslint-loader, ts-loader (неожиданно)

eslint-loader: 'a' is assigned a value but never used  no-unused-vars
ts-loader: Type '100' is not assignable to type 'string'.

Ошибка ts-loader не самая последняя, ​​это старый!

Это свидетельство того, что обработка не зависит от ts-loader?

Я не уверен, почему это происходит.

Это что, проблема webpack-dev-server вместо eslint-loader?

Мне нужен кто-то, чтобы мне помочь.

Envirioment

  • macOS Catalina v10.15.4
  • Node.js v12.16.2
  • npm v6.14.4
  • пряжа v1.22.4

1 Ответ

0 голосов
/ 13 мая 2020

Спросите о проблеме на GitHub.

Я использую https://github.com/webpack-contrib/eslint-webpack-plugin, и это работает! : тада:

https://github.com/webpack-contrib/eslint-loader/issues/327

...