Как обновить конфигурацию для eslint после обновления angular 9 до 10

#angular #typescript #eslint #tslint

#angular #typescript #eslint #tslint

Вопрос:

После обновления angular с 9 до 10 и запуска npm run lint я получил этот эксперимент > ng lint -исправить

 Schema validation failed with the following errors:
  Data path "" should NOT have additional properties(tsConfig).
  

Мой angular.json является:

     ..."lint": {
      "builder": "@angular-eslint/builder:lint",
      "options": {
        "eslintConfig": ".eslintrc.js",
        "tsConfig": [
          "tsconfig.app.json",
          "tsconfig.spec.json",
          "e2e/tsconfig.json"
        ],
        "exclude": ["**/node_modules/**"]
      }
    },...
  

Вот мой package.json — devDependencies:

 ..."@angular-devkit/build-angular": "~0.1001.1",
"@angular-eslint/builder": "0.3.0-beta.1",
"@angular-eslint/eslint-plugin": "0.0.1-alpha.32",
"@angular-eslint/eslint-plugin-template": "0.0.1-alpha.32",
"@angular-eslint/template-parser": "0.0.1-alpha.32",
"@angular/cli": "~10.1.0",
"@angular/compiler-cli": "~10.1.1",
"@angular/language-service": "~10.1.1",
"@types/file-saver": "^2.0.1",
"@types/google-libphonenumber": "^7.4.19",
"@types/jasmine": "~3.3.8",
"@types/jasminewd2": "~2.0.3",
"@typescript-eslint/eslint-plugin": "2.31.0",
"@typescript-eslint/parser": "2.31.0",
"codelyzer": "^5.2.2",
"eslint": "^7.6.0",
"eslint-config-airbnb-typescript": "^8.0.2",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-import": "^2.21.2",
"eslint-plugin-prettier": "^3.1.4",...
  

когда я заменяю ‘tsConfig’ на ‘lintFilePatterns’, интерфейс командной строки сообщает:

 error  Parsing error: "parserOptions.project" has been set for @typescript-eslint/parser.
The file does not match your project config: tsconfig.app.json.
The extension for the file (.json) is non-standard. You should add "parserOptions.extraFileExtensions" to your config
  

Что я должен обновить?

Комментарии:

1. Не могли бы вы предоставить весь ваш angular.json и ваш package.json целиком? Может быть несоответствие версии.

2. Да, я обновил его. 😀

3. Попробуйте обновить свой @angular-devkit/build-angular до 0.13.0

4. К сожалению, это не работает. 🙁

5. Не могли бы вы предоставить angular.json целиком?

Ответ №1:

У меня такая же проблема с Angular 8. Проблема в том, что конструктор в angular-eslint не поддерживает опцию tsConfig:https://github.com/angular-eslint/angular-eslint/blob/master/packages/builder/src/schema.d.ts

Моим решением было удалить tsConfig только для компоновки и скопировать файлы «include» до «lintFilePatterns». Я создал .eslintignore в корне моего проекта, где я перечисляю все «исключенные» файлы, которые у меня были (а именно node_modules).

Мой angular.json:

   ..."lint": {
      "builder": "@angular-eslint/builder:lint",
      "options": {
        "eslintConfig": ".eslintrc.js",
        "lintFilePatterns": [
          "**/*.spec.ts",
          "**/*.d.ts"
        ]
      }
    },...
  

и затем .eslintignore

 node_modules/*
  

Это заставило нг линта работать на меня

Ответ №2:

вы должны запустить следующую команду:

 ng g @angular-eslint/schematics:convert-tslint-to-eslint {{YOUR_PROJECT_NAME_GOES_HERE}}
  

он будет делать много вещей, но здесь кроется ваша ошибка:
введите описание изображения здесь

документ:https://github.com/angular-eslint/angular-eslint

Ответ №3:

Придерживайтесь документа https://github.com/angular-eslint/angular-eslint , проблема возникает из версии angular.

В настоящее время angular-eslint поддерживается старый typescript (<= 3.10), поэтому нам нужно использовать версию angular <10.0.6 (в 10.1.x используется typescript 4.0).

Я думаю, мне нужно дождаться совместимости, обновится, когда я смогу разрешить этот конфликт. Если у вас возникает та же проблема, что и у меня, вы можете попробовать понизить версию angular до версии 10.0.6, если вы сможете ее решить, я буду очень рад, если вы сможете разместить решение здесь. 😀