簡體   English   中英

我將 eslint 文檔中的所有推薦規則添加到 my.eslintrc.js 文件中,它們都拋出“未找到規則的定義”

[英]I added all the recommended rules from the eslint docs to my .eslintrc.js file and they all throw 'Definition for rule was not found'

這是我的.eslintrc.js文件的內容:

module.exports = {
    parser: '@typescript-eslint/parser',
    parserOptions: {
        project: 'tsconfig.json',
        sourceType: 'module'
    },
    plugins: ['@typescript-eslint/eslint-plugin'],
    extends: [
        'eslint:recommended',
        'plugin:@typescript-eslint/recommended',
        'plugin:prettier/recommended',
        'plugin:@typescript-eslint/recommended-requiring-type-checking'
    ],
    root: true,
    env: {
        node: true,
        jest: true
    },
    ignorePatterns: ['.eslintrc.js'],
    rules: {
        '@typescript-eslint/explicit-function-return-type': 'error',
        '@typescript-eslint/explicit-module-boundary-types': 'error',
        '@typescript-eslint/for-direction': 'error',
        '@typescript-eslint/getter-return': 'error',
        '@typescript-eslint/interface-name-prefix': 'off',
        '@typescript-eslint/no-async-promise-executor': 'error',
        '@typescript-eslint/no-await-in-loop': 'error',
        '@typescript-eslint/no-class-assign': 'error',
        '@typescript-eslint/no-compare-neg-zero': 'error',
        '@typescript-eslint/no-cond-assign': 'error',
        '@typescript-eslint/no-const-assign': 'error',
        '@typescript-eslint/no-constant-condition': 'error',
        '@typescript-eslint/no-constructor-return': 'error',
        '@typescript-eslint/no-control-regex': 'error',
        '@typescript-eslint/no-debugger': 'error',
        '@typescript-eslint/no-dupe-args': 'error',
        '@typescript-eslint/no-dupe-class-members': 'error',
        '@typescript-eslint/no-dupe-else-if': 'error',
        '@typescript-eslint/no-dupe-keys': 'error',
        '@typescript-eslint/no-duplicate-case': 'error',
        '@typescript-eslint/no-duplicate-imports': 'error',
        '@typescript-eslint/no-empty-character-class': 'error',
        '@typescript-eslint/no-empty-pattern': 'error',
        '@typescript-eslint/no-ex-assign': 'error',
        '@typescript-eslint/no-explicit-any': 'error',
        '@typescript-eslint/no-fallthrough': 'error',
        '@typescript-eslint/no-func-assign': 'error',
        '@typescript-eslint/no-import-assign': 'error',
        '@typescript-eslint/no-inner-declarations': 'error',
        '@typescript-eslint/no-invalid-regexp': 'error',
        '@typescript-eslint/no-irregular-whitespace': 'error',
        '@typescript-eslint/no-loss-of-precision': 'error',
        '@typescript-eslint/no-misleading-character-class': 'error',
        '@typescript-eslint/no-new-symbol': 'error',
        '@typescript-eslint/no-obj-calls': 'error',
        '@typescript-eslint/no-promise-executor-return': 'error',
        '@typescript-eslint/no-prototype-builtins': 'error',
        '@typescript-eslint/no-self-assign': 'error',
        '@typescript-eslint/no-self-compare': 'error',
        '@typescript-eslint/no-setter-return': 'error',
        '@typescript-eslint/no-sparse-arrays': 'error',
        '@typescript-eslint/no-template-curly-in-string': 'error',
        '@typescript-eslint/no-this-before-super': 'error',
        '@typescript-eslint/no-undef': 'error',
        '@typescript-eslint/no-unexpected-multiline': 'error',
        '@typescript-eslint/no-unmodified-loop-condition': 'error',
        '@typescript-eslint/no-unreachable': 'error',
        '@typescript-eslint/no-unreachable-loop': 'error',
        '@typescript-eslint/no-unsafe-finally': 'error',
        '@typescript-eslint/no-unsafe-negation': 'error',
        '@typescript-eslint/no-unsafe-optional-chaining': 'error',
        '@typescript-eslint/no-unused-expressions': 'error',
        '@typescript-eslint/no-unused-labels': 'error',
        '@typescript-eslint/no-unused-private-class-members': 'error',
        '@typescript-eslint/no-unused-vars': 'error',
        '@typescript-eslint/no-use-before-define': 'error',
        '@typescript-eslint/no-useless-backreference': 'error',
        '@typescript-eslint/require-atomic-updates': 'error',
        '@typescript-eslint/use-isnan ': 'error',
        '@typescript-eslint/valid-typeof': 'error',
        curly: 'error'
    }
};

package.json內容:

...
  "scripts": {
    "lint": "eslint \"{src,libs}/**/*.ts\" --fix",
    "lint:ci": "eslint \"{src,libs}/**/*.ts\"",
...
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "5.12.1",
    "@typescript-eslint/parser": "5.12.1",
    "eslint": "8.9.0",
    "eslint-config-prettier": "8.4.0",
    "eslint-plugin-import": "2.25.4",
    "eslint-plugin-prettier": "4.0.0",
...

完整錯誤列表:

 1:1  error  Definition for rule '@typescript-eslint/for-direction' was not found                    @typescript-eslint/for-direction
  1:1  error  Definition for rule '@typescript-eslint/getter-return' was not found                    @typescript-eslint/getter-return
  1:1  error  Definition for rule '@typescript-eslint/no-async-promise-executor' was not found        @typescript-eslint/no-async-promise-executor
  1:1  error  Definition for rule '@typescript-eslint/no-await-in-loop' was not found                 @typescript-eslint/no-await-in-loop
  1:1  error  Definition for rule '@typescript-eslint/no-class-assign' was not found                  @typescript-eslint/no-class-assign
  1:1  error  Definition for rule '@typescript-eslint/no-compare-neg-zero' was not found              @typescript-eslint/no-compare-neg-zero
  1:1  error  Definition for rule '@typescript-eslint/no-cond-assign' was not found                   @typescript-eslint/no-cond-assign
  1:1  error  Definition for rule '@typescript-eslint/no-const-assign' was not found                  @typescript-eslint/no-const-assign
  1:1  error  Definition for rule '@typescript-eslint/no-constant-condition' was not found            @typescript-eslint/no-constant-condition
  1:1  error  Definition for rule '@typescript-eslint/no-constructor-return' was not found            @typescript-eslint/no-constructor-return
  1:1  error  Definition for rule '@typescript-eslint/no-control-regex' was not found                 @typescript-eslint/no-control-regex
  1:1  error  Definition for rule '@typescript-eslint/no-debugger' was not found                      @typescript-eslint/no-debugger
  1:1  error  Definition for rule '@typescript-eslint/no-dupe-args' was not found                     @typescript-eslint/no-dupe-args
  1:1  error  Definition for rule '@typescript-eslint/no-dupe-else-if' was not found                  @typescript-eslint/no-dupe-else-if
  1:1  error  Definition for rule '@typescript-eslint/no-dupe-keys' was not found                     @typescript-eslint/no-dupe-keys
  1:1  error  Definition for rule '@typescript-eslint/no-duplicate-case' was not found                @typescript-eslint/no-duplicate-case
  1:1  error  Definition for rule '@typescript-eslint/no-empty-character-class' was not found         @typescript-eslint/no-empty-character-class
  1:1  error  Definition for rule '@typescript-eslint/no-empty-pattern' was not found                 @typescript-eslint/no-empty-pattern
  1:1  error  Definition for rule '@typescript-eslint/no-ex-assign' was not found                     @typescript-eslint/no-ex-assign
  1:1  error  Definition for rule '@typescript-eslint/no-fallthrough' was not found                   @typescript-eslint/no-fallthrough
  1:1  error  Definition for rule '@typescript-eslint/no-func-assign' was not found                   @typescript-eslint/no-func-assign
  1:1  error  Definition for rule '@typescript-eslint/no-import-assign' was not found                 @typescript-eslint/no-import-assign
  1:1  error  Definition for rule '@typescript-eslint/no-inner-declarations' was not found            @typescript-eslint/no-inner-declarations
  1:1  error  Definition for rule '@typescript-eslint/no-invalid-regexp' was not found                @typescript-eslint/no-invalid-regexp
  1:1  error  Definition for rule '@typescript-eslint/no-irregular-whitespace' was not found          @typescript-eslint/no-irregular-whitespace
  1:1  error  Definition for rule '@typescript-eslint/no-misleading-character-class' was not found    @typescript-eslint/no-misleading-character-class
  1:1  error  Definition for rule '@typescript-eslint/no-new-symbol' was not found                    @typescript-eslint/no-new-symbol
  1:1  error  Definition for rule '@typescript-eslint/no-obj-calls' was not found                     @typescript-eslint/no-obj-calls
  1:1  error  Definition for rule '@typescript-eslint/no-promise-executor-return' was not found       @typescript-eslint/no-promise-executor-return
  1:1  error  Definition for rule '@typescript-eslint/no-prototype-builtins' was not found            @typescript-eslint/no-prototype-builtins
  1:1  error  Definition for rule '@typescript-eslint/no-self-assign' was not found                   @typescript-eslint/no-self-assign
  1:1  error  Definition for rule '@typescript-eslint/no-self-compare' was not found                  @typescript-eslint/no-self-compare
  1:1  error  Definition for rule '@typescript-eslint/no-setter-return' was not found                 @typescript-eslint/no-setter-return
  1:1  error  Definition for rule '@typescript-eslint/no-sparse-arrays' was not found                 @typescript-eslint/no-sparse-arrays
  1:1  error  Definition for rule '@typescript-eslint/no-template-curly-in-string' was not found      @typescript-eslint/no-template-curly-in-string
  1:1  error  Definition for rule '@typescript-eslint/no-this-before-super' was not found             @typescript-eslint/no-this-before-super
  1:1  error  Definition for rule '@typescript-eslint/no-undef' was not found                         @typescript-eslint/no-undef
  1:1  error  Definition for rule '@typescript-eslint/no-unexpected-multiline' was not found          @typescript-eslint/no-unexpected-multiline
  1:1  error  Definition for rule '@typescript-eslint/no-unmodified-loop-condition' was not found     @typescript-eslint/no-unmodified-loop-condition
  1:1  error  Definition for rule '@typescript-eslint/no-unreachable' was not found                   @typescript-eslint/no-unreachable
  1:1  error  Definition for rule '@typescript-eslint/no-unreachable-loop' was not found              @typescript-eslint/no-unreachable-loop
  1:1  error  Definition for rule '@typescript-eslint/no-unsafe-finally' was not found                @typescript-eslint/no-unsafe-finally
  1:1  error  Definition for rule '@typescript-eslint/no-unsafe-negation' was not found               @typescript-eslint/no-unsafe-negation
  1:1  error  Definition for rule '@typescript-eslint/no-unsafe-optional-chaining' was not found      @typescript-eslint/no-unsafe-optional-chaining
  1:1  error  Definition for rule '@typescript-eslint/no-unused-labels' was not found                 @typescript-eslint/no-unused-labels
  1:1  error  Definition for rule '@typescript-eslint/no-unused-private-class-members' was not found  @typescript-eslint/no-unused-private-class-members
  1:1  error  Definition for rule '@typescript-eslint/no-useless-backreference' was not found         @typescript-eslint/no-useless-backreference
  1:1  error  Definition for rule '@typescript-eslint/require-atomic-updates' was not found           @typescript-eslint/require-atomic-updates
  1:1  error  Definition for rule '@typescript-eslint/use-isnan ' was not found                       @typescript-eslint/use-isnan 
  1:1  error  Definition for rule '@typescript-eslint/valid-typeof' was not found                     @typescript-eslint/valid-typeof

我真的不知道我還需要在我的配置中添加什么才能使eslint使用推薦的規則。 我一直在研究文檔,感覺就像我只是隨機嘗試一些事情來試圖讓錯誤消失。

該錯誤來自 ESLint 認為 TypeScript 規則是缺失的規則。

盡管您的package.json@typescript-eslint/eslint-plugin@typescript-eslint/parser指定了正確的版本,但請仔細檢查您的項目是否確實使用了正確的版本。

運行以下命令:

npm ls @typescript-eslint/eslint-plugin
npm ls @typescript-eslint/parser

如果它們不是5.12.1 ,請嘗試將它們更新到該版本。

npm install --save-dev @typescript-eslint/eslint-plugin@5.12.1
npm install --save-dev @typescript-eslint/parser@5.12.1

注意: 根據作者的說法,如果您全局安裝了 ESLint,那么也要全局安裝@typescript-eslint/eslint-plugin (使用-g而不是--save-dev )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM