2
votes

L'erreur d'analyse "parserOptions.project" a été définie pour @ typescript-eslint / parser

J'ai créé un nouveau projet NestJS qui est un framework NodeJS très populaire. Mais j'ai cette erreur (voir le titre) sur mon IDE (PhpStorm 2020.2-Beta) et ESLint ne fonctionne pas du tout.

J'ai utilisé la CLI NestJS:

Typescript: 3.7.4
Node: 14.3.0
ESLint: 7.1.0
@typescript-eslint/parser: 3.0.2
Yarn: 1.22.4

Je ne semble pas être le seul à avoir ce problème, donc ce serait bien de trouver la cause de ce problème et de le résoudre une fois pour toutes.

J'ai déjà un problème en suspens mais je n'ai pas eu de réponse, c'est vraiment très problématique.

Si quelqu'un a une idée sur la façon de résoudre le problème et de conserver une intégration ESLint / Prettier avec PhpStorm , merci.

Repro

// tsconfig.json
{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true
  }
}

// .eslintrc.js
module.exports = {
  parser: '@typescript-eslint/parser',
  parserOptions: {
    project: 'tsconfig.json',
    sourceType: 'module',
  },
  plugins: ['@typescript-eslint/eslint-plugin'],
  extends: [
    'plugin:@typescript-eslint/eslint-recommended',
    'plugin:@typescript-eslint/recommended',
    'prettier',
    'prettier/@typescript-eslint',
  ],
  root: true,
  env: {
    node: true,
    jest: true,
  },
  rules: {
    '@typescript-eslint/interface-name-prefix': 'off',
    '@typescript-eslint/explicit-function-return-type': 'off',
    '@typescript-eslint/no-explicit-any': 'off',
  },
};

Information additionnelle Screenshot_20200716_233543

Versions

nest new nestjs-micro


0 commentaires

3 Réponses :


0
votes

Ajoutez-le aux includes dans tsconfig.json:

"include": [
  ".eslintrc.js",
]


0 commentaires

0
votes

Je l'ai compris.

L'erreur se produit lorsque Typescript n'a pas de fichier à inclure pour la compilation.

La solution la plus simple consiste à créer un fichier tsconfig.build.json par exemple et à y spécifier les paramètres suivants:

{
  "extends": "./tsconfig.json",
  "exclude": ["node_modules", "test", "dist", "dist/**/*spec.ts"],
  "include": ["src/**/*", ".eslintrc.js"]
}

L'exemple ci-dessus est adapté pour NestJS mais devrait fonctionner pour d'autres projets.

La chose la plus surprenante est que ce n'est qu'une erreur qui apparaît sur PHPStorm, la construction, ça marche bien.


0 commentaires

0
votes

FWIW ce qui a fonctionné pour moi avec cette erreur était d'ajouter ignorePatterns: ['.eslintrc.js'], au fichier .eslintrc.js . Cette ligne indique à eslint d'ignorer le fichier .eslintrc.js (puisqu'il n'est pas inclus dans le tsconfig projet déclaré par rootDir ).


0 commentaires