ESLint — Этот файл не соответствует конфигурации вашего проекта

#typescript #eslint #typescript-eslint

Вопрос:

Я получаю следующие две ошибки

 .../src/index.ts
  0:0  error  Parsing error: "parserOptions.project" has been set for @typescript-eslint/parser.
The file does not match your project config: src/index.ts.
The file must be included in at least one of the projects provided

.../src/loaders/index.ts
  0:0  error  Parsing error: "parserOptions.project" has been set for @typescript-eslint/parser.
The file does not match your project config: src/loaders/index.ts.
The file must be included in at least one of the projects provided
 

Мой проект, который предполагается использовать в качестве библиотеки, содержит src и папку тестов.

src/index.ts является моим файлом ввода и src/loaders/index.ts импортируется с помощью разрешения модуля стиля узла, т. е. import * from './loaders' .

Вот мой .eslintrc

 {
  "parser": "@typescript-eslint/parser",
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:jest/style",
    "plugin:jest/recommended",
    "prettier"
  ],
  "plugins": ["@typescript-eslint"],
  "parserOptions": {
    "project": "./tsconfig.eslint.json"
  },
  "root": true,
  "rules": {
    ...
  }
}
 

и вот мои tsconfigs
tsconfig.json

 {
  "compilerOptions": {
    "target": "es2020",
    "module": "commonjs",
    "allowJs": true,
    "checkJs": true,
    "sourceMap": true,
    "outDir": "./dist",
    "strict": true,
    "noImplicitAny": true,
    "moduleResolution": "node",
    "isolatedModules": true,
    "baseUrl": ".",
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "resolveJsonModule": true
  },
  "include": ["src/**/*"]
}

 

и tsconfig.eslint.json

 {
  "extends": "./tsconfig.json",
  "include": [
    "tests/**/*"
  ]
}
 

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

1. Мое текущее временное исправление заключается в добавлении инструкции include "include": [ "tests/**/*", "**/index.ts" ]

Ответ №1:

В документах TypeScript-ESLint есть удобный часто задаваемый вопрос об этом

https://typescript-eslint.io/docs/linting/type-linting#i-get-errors-telling-me-the-file-must-be-included-in-at-least-one-of-the-projects-provided

TL;DR — если вы хотите добавить файл с информацией о типе, вам НЕОБХОДИМО включить его в tsconfig, предоставленный через parserOptions.projects .

Также стоит отметить, что в файле tsconfig, который расширяет другой файл tsconfig — includes, не объединяется с расширенной конфигурацией. Таким образом , в ваше tsconfig.eslint.json вы только включаете tests/**/* и src/**/* не включаете. Отсюда и ошибка.

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

1. Это имеет смысл для тестов, но не для импорта индекса.

2.В файле tsconfig, который расширяет другой файл tsconfig — includes не объединяется с расширенной конфигурацией. Таким образом , в вашем tsconfig.eslint.json у вас есть только includes tests/**/* , и src/**/* не входит. Отсюда и ошибка.