typescript-eslint config: le fichier .eslintrc 'module' n'est pas défini

Aug 19 2020

Je mets en place un nouveau projet comme décrit dans la documentation de démarrage de typescript-eslint . Cependant, dans mon .eslintrc.jsfichier, j'obtiens une erreur:

'module' n'est pas défini.eslint (no-undef)

Maintenant, si je retire eslint:recommendedde la extendsde la configuration, cette erreur disparaît. Cependant, les règles typiques aiment debuggerou const iAmUnused = truene sont pas reprises par ESLint, donc cela ressemble un peu à un coup de taupe.

Pourquoi mon fichier ESLint est-il récupéré lorsqu'il se trouve à la racine de mon projet avec l' eslint:recommendedoption activée? Je ne veux pas inclure ce fichier dans mon .eslintignorecar lors de l'exécution de ma eslintcommande, cela indique que ce fichier est déjà automatiquement ignoré, mais ce n'est pas le cas 🤷‍♂️

ESLINTRC:

module.exports = {
  root: true,
  parser: '@typescript-eslint/parser',
  parserOptions: {
    project: '*/tsconfig.json',
  },
  settings: {
    react: {
      version: 'detect',
    },
  },
  plugins: ['@typescript-eslint', 'jest', 'react', 'react-hooks'],
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:jest/recommended',
    'plugin:prettier/recommended',
    'plugin:react/recommended',
    'plugin:react-hooks/recommended',
    'prettier',
    'prettier/@typescript-eslint',
  ],
  rules: {
    'no-unused-vars': 2,
  },
  env: {
    browser: true,
    es6: true,
    jest: true,
  },
  overrides: [
    {
      files: ['**/*.tsx'],
      rules: {
        'react/prop-types': 'off',
      },
    },
  ],
};

TSConfig:

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "declaration": true,
    "declarationDir": "build",
    "jsx": "react",
    "lib": ["es6", "dom", "es2016", "es2017"],
    "module": "esnext",
    "moduleResolution": "node",
    "noEmit": true,
    "resolveJsonModule": true,
    "rootDir": "./src",
    "rootDirs": ["./src"],
    "sourceMap": true,
    "strict": true,
    "target": "es5"
  },
  "include": ["./src"],
  "exclude": ["node_modules", "build", "dist", "src/**/*.stories.tsx", "src/**/*.test.tsx"]
}

Réponses

6 PhilLucks Aug 21 2020 at 02:49

Il semble que la envmise à jour soit nécessaire à partir de:

env: {
    browser: true,
    es6: true,
    jest: true,
  },

à inclure node: truepour que l' moduleerreur soit résolue.

BradZacher Aug 20 2020 at 12:51

https://eslint.org/docs/user-guide/configuring#specifying-environments

Vous devez spécifier le ou les environnements pertinents pour votre projet.

Dans ce cas, vous voudrez probablement ajouter l' commonjsenvironnement.

J'envisagerais simplement de désactiver la no-undefrègle, car c'est une vérification qui est déjà couverte par TypeScript lui-même.