为什么eslint认为JSX或某些React @types未定义,自从升级typescript-eslint/parser到4.0.0版本以后。
为什么eslint认为JSX或某些React @types未定义,自从升级typescript-eslint/parser到4.0.0版本以后。
这是一个基于ReactJs构建的大型项目,基于eslint规则,并且有以下eslint配置:
const DONT_WARN_CI = process.env.NODE_ENV === 'production' ? 0 : 1 module.exports = { extends: [ 'eslint:recommended', 'plugin:jsx-a11y/recommended', 'plugin:react/recommended', 'prettier', 'prettier/@typescript-eslint' ], plugins: [ 'react', 'html', 'json', 'prettier', 'import', 'jsx-a11y', 'jest', '@typescript-eslint', 'cypress' ], settings: { 'html/indent': '0', es6: true, react: { version: '16.5' }, propWrapperFunctions: ['forbidExtraProps'], 'import/resolver': { node: { extensions: ['.js', '.jsx', '.json', '.ts', '.tsx'] }, alias: { extensions: ['.js', '.jsx', '.json'] } } }, env: { browser: true, node: true, es6: true, jest: true, 'cypress/globals': true }, globals: { React: true, google: true, mount: true, mountWithRouter: true, shallow: true, shallowWithRouter: true, context: true, expect: true, jsdom: true }, parser: '@typescript-eslint/parser', parserOptions: { ecmaVersion: 'es2020', ecmaFeatures: { globalReturn: true, jsx: true }, lib: ['ES2020'] }, rules: { 'arrow-parens': ['error', 'as-needed'], 'comma-dangle': ['error', 'never'], eqeqeq: ['error', 'smart'], 'import/first': 0, 'import/named': 'error', 'import/no-deprecated': process.env.NODE_ENV === 'production' ? 0 : 1, 'import/no-unresolved': ['error', { commonjs: true }], 'jsx-a11y/alt-text': DONT_WARN_CI, 'jsx-a11y/anchor-has-content': DONT_WARN_CI, 'jsx-a11y/anchor-is-valid': DONT_WARN_CI, 'jsx-a11y/click-events-have-key-events': DONT_WARN_CI, 'jsx-a11y/heading-has-content': DONT_WARN_CI, 'jsx-a11y/iframe-has-title': DONT_WARN_CI, 'jsx-a11y/label-has-associated-control': [ 'error', { controlComponents: ['select'] } ], 'jsx-a11y/label-has-for': [ 'error', { required: { some: ['nesting', 'id'] } } ], 'jsx-a11y/media-has-caption': DONT_WARN_CI, 'jsx-a11y/mouse-events-have-key-events': DONT_WARN_CI, 'jsx-a11y/no-autofocus': DONT_WARN_CI, 'jsx-a11y/no-onchange': 0, 'jsx-a11y/no-noninteractive-element-interactions': DONT_WARN_CI, 'jsx-a11y/no-static-element-interactions': DONT_WARN_CI, 'jsx-a11y/no-noninteractive-tabindex': DONT_WARN_CI, 'jsx-a11y/tabindex-no-positive': DONT_WARN_CI, 'no-console': 'warn', 'no-debugger': 'warn', 'no-mixed-operators': 0, 'no-redeclare': 'off', 'no-restricted-globals': [ 'error', 'addEventListener', 'blur', 'close', 'closed', 'confirm', 'defaultStatus', 'defaultstatus', 'event', 'external', 'find', 'focus', 'frameElement', 'frames', 'history', 'innerHeight', 'innerWidth', 'length', 'localStorage', 'location', 'locationbar', 'menubar', 'moveBy', 'moveTo', 'name', 'onblur', 'onerror', 'onfocus', 'onload', 'onresize', 'onunload', 'open', 'opener', 'opera', 'outerHeight', 'outerWidth', 'pageXOffset', 'pageYOffset', 'parent', 'print', 'removeEventListener', 'resizeBy', 'resizeTo', 'screen', 'screenLeft', 'screenTop', 'screenX', 'screenY', 'scroll', 'scrollbars', 'scrollBy', 'scrollTo', 'scrollX', 'scrollY', 'self', 'status', 'statusbar', 'stop', 'toolbar', 'top' ], 'no-restricted-modules': ['error', 'chai'], 'no-unused-vars': [ 'error', { varsIgnorePattern: '^_', argsIgnorePattern: '^_' } ], 'no-var': 'error', 'one-var': ['error', { initialized: 'never' }], 'prefer-const': [ 'error', { destructuring: 'any' } ], 'prettier/prettier': 'error', 'react/jsx-curly-brace-presence': [ 'error', { children: 'ignore', props: 'never' } ], 'react/jsx-no-bind': [ 'error', { allowArrowFunctions: true } ], 'react/jsx-no-literals': 1, 'react/jsx-no-target-blank': DONT_WARN_CI, 'react/jsx-no-undef': ['error', { allowGlobals: true }], 'react/no-deprecated': DONT_WARN_CI, 'react/prop-types': 0, 'require-await': 'error', 'space-before-function-paren': 0 }, overrides: [ { files: ['**/*.ts', '**/*.tsx'], rules: { 'no-unused-vars': 'off', 'import/no-unresolved': 'off' } } ] }
自从将库`"@typescript-eslint/parser": "^3.10.1"`升级到`"@typescript-eslint/parser": "^4.0.0"`之后,以下命令...
eslint --fix --ext .js,.jsx,.json,.ts,.tsx . && stylelint --fix '**/*.scss'
...会出现以下错误:
9:45 error 'ScrollBehavior' is not defined no-undef 224:12 error 'KeyboardEventInit' is not defined no-undef 53:5 error 'JSX' is not defined no-undef
我知道可以通过在`globals`属性中添加`JSX: true`或`KeyboardEventInit: true`来修复这些错误,但这不是我想要的解决方式。有没有关于这里出现了什么问题的想法?配置错误在哪里?
非常感谢。