javascript - Tolkningsfeil: ble ikke funnet av prosjektjenesten, men jeg har ignorert disse filene


Min prosjektstruktur

  • dist (kompilert kode av ts)

    • bibliotek

      • lib.d.ts
      • lib
      • lib.d.ts

      • lib.js
    • index.d.ts
    • index.js
  • src (kildekode)

    • bibliotek

      • lib.ts
      • lib
      • lib.ts

    • index.ts
  • eslint.config.mjs
  • packages.json
  • tsconfig.json
  • yarn.lock

Min tsconfig.json

{
    "compilerOptions": {
        "target": "ES2022",
        "module": "commonjs",
        "outDir": "./dist",
        "rootDir": "./",
        "strict": true,
        "esModuleInterop": true,
        "resolveJsonModule": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true,
        "baseUrl": "./src",
        "declaration": true,
        "allowJs": true
    },
    "include": [
        "src/**/*.ts",
    ],
    "exclude": [
        "eslint.config.mjs",
        "dist/**"
    ]
}

Min eslint.config.mjs:

// @ts-check

import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import tsParser from '@typescript-eslint/parser'

import { dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
    
const __dirname = dirname(fileURLToPath(import.meta.url));

export default tseslint.config(
  {
    files: [
      "src/**/*.ts"
    ],
    ignores: [
      'dist/**/*.ts',
      'dist/**',
      "**/*.mjs",
      "eslint.config.mjs",
      "**/*.js"
    ],
    rules: {
      "@typescript-eslint/no-unnecessary-condition": "error",
      "@typescript-eslint/no-unnecessary-type-assertion": "error",
    },
  },
  ...tseslint.configs.strictTypeChecked,
  ...tseslint.configs.recommendedTypeChecked,
  {
    languageOptions: {
      parserOptions: {
        project: "./tsconfig.json",
        projectService: true,
        tsconfigRootDir: __dirname,
        projectFolderIgnoreList: [
          "**dist**",
        ],
      },
    },
  },
);

Jeg vil at tsc skal legge de kompilerte resultatene i dist-mappen (jeg er ny på TypeScript, så jeg vet ikke om dette er den riktige måten å gjøre et TS-prosjekt på).

Jeg har ignorert filer i dist-mappen, men jeg får fortsatt disse feilene:

/Users/kainzhong/VSCode/eslintTmp/dist/src/index.d.ts
  0:0  error  Parsing error: /Users/kainzhong/VSCode/eslintTmp/dist/src/index.d.ts was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject

/Users/kainzhong/VSCode/eslintTmp/dist/src/index.js
  0:0  error  Parsing error: /Users/kainzhong/VSCode/eslintTmp/dist/src/index.js was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject

/Users/kainzhong/VSCode/eslintTmp/dist/src/lib/lib.d.ts
  0:0  error  Parsing error: /Users/kainzhong/VSCode/eslintTmp/dist/src/lib/lib.d.ts was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject

/Users/kainzhong/VSCode/eslintTmp/dist/src/lib/lib.js
  0:0  error  Parsing error: /Users/kainzhong/VSCode/eslintTmp/dist/src/lib/lib.js was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject

/Users/kainzhong/VSCode/eslintTmp/eslint.config.mjs
  0:0  error  Parsing error: /Users/kainzhong/VSCode/eslintTmp/eslint.config.mjs was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject

Har jeg ikke allerede ignorert disse filene? Hvorfor klager eslint fortsatt på dem?

Svar #1

Denne konfigurasjonen ignorerer faktisk ikke de filene - det er problemet. ignores har to måter å oppføre seg på:

  • Når du er i en konfigurasjonsblokk med files, stopper det den spesifikke konfigurasjonsblokken fra å påvirke de ignorert filene
  • Når de er i sin egen konfigurasjonsblokk uten files, forteller det ESLint å ignorere disse filene

Flytt ignores til sin egen blokk i starten:

export default tseslint.config(
  {
    ignores: [
      'dist/**/*.ts',
      'dist/**',
      "**/*.mjs",
      "eslint.config.mjs",
      "**/*.js"
    ],
  },
  {
    files: [
      "src/**/*.ts"
    ],
  // ...

Fra https://eslint.org/docs/latest/use/configure/configuration-files#excluding-files-with-ignores.

Relaterte artikler