#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 есть удобный часто задаваемый вопрос об этом
TL;DR — если вы хотите добавить файл с информацией о типе, вам НЕОБХОДИМО включить его в tsconfig, предоставленный через parserOptions.projects
.
Также стоит отметить, что в файле tsconfig, который расширяет другой файл tsconfig — includes, не объединяется с расширенной конфигурацией. Таким образом , в ваше tsconfig.eslint.json
вы только включаете tests/**/*
и src/**/*
не включаете. Отсюда и ошибка.
Комментарии:
1. Это имеет смысл для тестов, но не для импорта индекса.
2.В файле tsconfig, который расширяет другой файл tsconfig —
includes
не объединяется с расширенной конфигурацией. Таким образом , в вашемtsconfig.eslint.json
у вас есть толькоincludes
tests/**/*
, иsrc/**/*
не входит. Отсюда и ошибка.