En mi proyecto mecanografiado, estoy usando eslint. Los archivos a continuación están en la raíz y también tengo las subcarpetas /dist
y /src
.
eslintrc.js
module.exports = { root: true, parser: '@typescript-eslint/parser', parserOptions: { tsconfigRootDir: __dirname, project: ['./tsconfig.json'], }, rules: { strict: 'error', semi: ['error', 'always'], 'no-cond-assign': ['error', 'always'], }, plugins: ['@typescript-eslint'], extends: [ 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/recommended-requiring-type-checking', ], }
tsconfig.json
{ "compilerOptions": { "outDir": "dist", "noImplicitAny": true, "moduleResolution": "Node", "resolveJsonModule": true, "module": "ES2020", "target": "ES2020", "lib": ["ES2020"], "allowJs": false, "alwaysStrict": true }, "include": ["src"] }
la palabra module
en la parte superior tiene una línea roja con este error
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
¿Cómo puedo arreglar esto?
Actualice su eslintrc.js
para incluir:
ignorePatterns: ['.eslintrc.js']
mismo error, esto funcionó para mí: https://github.com/nestjs/nest/issues/4900#issuecomment-669743374 https://github.com/nestjs/nest/issues/4900#issuecomment-707330674
parece que el archivo de configuración debe llamarse .eslintrc y usar el formato json en lugar de .eslintrc.js y parserOptions.createDefaultProgram debe establecerse en verdadero
El molesto error básicamente dice que el archivo eslintrc.js
es a la vez:
¡Entonces, ESLint no sabe qué hacer y se asusta!
Tenga en cuenta que si bien este archivo no incluye sus códigos, debe decidir si desea que este archivo esté alineado (p. ej., para tabulación frente a espacio, o comillas dobles frente a comillas simples) o no.
Puede omitir (1) o (2) de la situación conflictiva anterior.
Es mas fácil. Simplemente agregue el nombre del archivo (por ejemplo .eslintrc.js
) a .eslintignore
.
También puede ver el caso 1.3 de mi respuesta, aquí para conocer las diferentes formas en que se puede hacer.
Typescript-ESLint obtiene la lista de archivos para incluir de tsconfig.json
a través de parserOptions > project
.
Por lo tanto, puede agregar el archivo al tsconfig.json
existente (Solución 2.1) o crear un tsconfig.eslint.json
secundario para incluir archivos como este, que desea que TypeScript-eslint lintifique, pero no necesariamente procesados por el Compilador mecanografiado.
Solución 2.1: agréguelo al tsconfig.json existente
// in tsconfig.json ... "include": [ ".eslintrc.js", // ... ]
Solución 2.2: agréguelo a un archivo tsconfig.eslint.json
separado Cree un archivo con el nombre tsconfig.eslint.json
con este contenido:
// new file: tsconfig.eslint.json { "include": [ ".eslintrc.js" ] }
y luego eslintrc.js
en el project
parserOptions
> de eslintrc.js (sí, project
acepta tanto una cadena como una matriz de cadenas):
// in eslintrc.js ... parserOptions: { project: [ resolve(__dirname, './tsconfig.json'), resolve(__dirname, './tsconfig.eslint.json'), ], }
PD. Esta respuesta es muy similar, le daré algo de crédito a eso.