Конфигурация typescript-eslint: файл .eslintrc 'module' не определен

Я создаю новый проект, как описано в typescript-eslint документация по началу работы. Однако в моем .eslintrc.js файле я получаю сообщение об ошибке:

'модуль' не определен. eslint (no-undef)

Теперь, если я удалю eslint:recommended из extends конфигурации, эта ошибка исчезнет. Тем не менее, типичные правила, такие как debugger или const iAmUnused = true, не поддерживаются ESLint, поэтому это немного похоже на удар крота.

Почему мой файл ESLint выбирается, когда он находится в корне моего проекта с включенным eslint:recommended? Я не хочу включать этот файл в свой .eslintignore, потому что при запуске моей команды eslint он говорит, что этот файл уже автоматически игнорируется, но это не так ????‍♂️

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"]
}


person Phil Lucks    schedule 18.08.2020    source источник
comment
Вы не указали, что module является глобальным. Мне любопытно, как вы его используете, потому что обычно вы делаете это, только если бы вы писали модули CommonJS вручную.   -  person Aluan Haddad    schedule 19.08.2020


Ответы (2)


Похоже, что env нужно было обновить с:

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

включить node: true для устранения ошибки module.

person Phil Lucks    schedule 20.08.2020

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

Вам необходимо указать среду (среды), относящуюся к вашему проекту.

В этом случае вы, вероятно, захотите добавить среду commonjs.

Я бы просто подумал об отключении правила no-undef, поскольку это проверка, которая уже предусмотрена самим TypeScript.

person Brad Zacher    schedule 20.08.2020
comment
Да, я включил no-undef в целях тестирования и удалил его сейчас. БЛАГОДАРНОСТЬ! - person Phil Lucks; 20.08.2020