Созонов Алексей

Веб-разработчик

Parsing Error: Cannot read file 'tsconfig.json'

03.01.2024

Чтобы решить ошибку "Parsing Error: Cannot read file 'tsconfig.json'", обновите ваш файл .eslintrc.js, установив опцию tsconfigRootDir равной __dirname, чтобы принудить ESLint разрешать конфигурацию проекта относительно папки, в которой находится файл .eslintrc.js.

Откройте ваш файл .eslintrc.js и добавьте или обновите объект parserOptions следующим образом:

module.exports = {
    parserOptions: {
        project: 'tsconfig.json',
        tsconfigRootDir: __dirname,
        sourceType: 'module',
    },
    // ... остальные настройки
};

Устанавливая объект parserOptions, мы указываем ESLint, какие опции языка JavaScript мы хотим поддерживать.

Опция sourceType установлена как module, чтобы указать, что мы хотим поддерживать модули ES6.

Опция tsconfigRootDir установлена как __dirname, чтобы ESLint разрешал конфигурацию проекта относительно файла .eslintrc.js.

После обновления объекта parserOptions у вас может возникнуть ошибка.

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

Если у вас возникла ошибка "parserOptions.project" has been set for @typescript-eslint/parser, создайте файл tsconfig.eslint.json в корневой директории рядом с вашим файлом tsconfig.json.

{
    "extends": "./tsconfig.json",
    "include": [
        // 👇️ добавьте все директории и файлы
        // которые вы хотите линтить здесь
        "src",
        "tests",

        // добавьте все файлы, в которых вы видите
        // ошибку "parserOptions.project"
        ".eslintrc.js"
    ]
}

Убедитесь, что вы добавили все директории, которые вы хотите линтить, в массив include.

Теперь откройте ваш файл .eslintrc.js и обновите свойство project, чтобы указать на специальный для ESLint tsconfig файл.

module.exports = {
    parserOptions: {
        project: 'tsconfig.eslint.json',
        tsconfigRootDir: __dirname,
        sourceType: 'module',
    },
    // ... остальные настройки
};

Ваша ошибка должна быть устранена. Если нет, попробуйте перезапустить вашу среду разработки.

Это необходимо, потому что добавление опции parserOptions.project в проект TypeScript вызывает ошибку ESLint, если мы пытаемся линтить файлы, которые не включены в наш проект TypeScript.

Чтобы обойти это, мы должны указать все файлы, которые мы хотим линтить, в массиве include файла tsconfig.eslint.json.

Короче говоря, добавьте все файлы, которые вы хотите линтить, но которые не включены в ваш tsconfig.json, в массив include файла tsconfig.eslint.json.

Скорее всего, это будут конфигурационные файлы, расположенные в вашей корневой директории.

В качестве альтернативы, вы можете добавить любые файлы, в которых вы видите ошибку, в ваш файл .eslintignore, если вы не хотите линтить их. Исправление ошибки в Visual Studio Code

Если ошибка остается и вы используете среду разработки VSCode, создайте папку .vscode в корневой директории вашего проекта.

Добавьте файл settings.json в папку .vscode и вставьте туда следующее содержимое.

{
    "eslint.workingDirectories": [
        "src"
    ]
}

Этот файл предполагает, что вы хотите линтить директорию src.

Если у вашего проекта 2 директории, которые вы хотите линтить, например, frontend и backend, обновите массив workingDirectories следующим образом:

{
    "eslint.workingDirectories": [
        "frontend
        ...

#typescript