如何修复“未找到规则‘@typescript-eslint/no-use-before-declare’的定义。eslint(@typescript-eslint/no-use-before-declare)”

O.M*_*Koh 13 typescript eslint

我是 eslint 的新手,我不知道如何解决这个问题。我的导入的开头总是用红线下划线。它抱怨找不到指定规则的定义。我想保留这条规则,因为它似乎在其他方面很有用。在此处输入图片说明.

对于我的 .eslintrc.js 文件,我设置了以下规则:

`

module.exports = {
    env: {
        browser: true,
        node: true
    },
    extends: [
        'eslint:recommended',
        'plugin:@typescript-eslint/eslint-recommended',
        'plugin:@typescript-eslint/recommended',
        'plugin:@typescript-eslint/recommended-requiring-type-checking',
        'prettier'
    ],
    parser: '@typescript-eslint/parser',
    parserOptions: {
        project: 'tsconfig.json',
        sourceType: 'module'
    },
    plugins: ['@typescript-eslint', '@typescript-eslint/tslint'],
    rules: {
        '@typescript-eslint/class-name-casing': 'error',
        '@typescript-eslint/consistent-type-definitions': 'error',
        '@typescript-eslint/explicit-member-accessibility': [
            'off',
            {
                accessibility: 'explicit'
            }
        ],
        '@typescript-eslint/indent': ['error', 'tab'],
        '@typescript-eslint/member-delimiter-style': [
            'error',
            {
                multiline: {
                    delimiter: 'semi',
                    requireLast: true
                },
                singleline: {
                    delimiter: 'semi',
                    requireLast: false
                }
            }
        ],
        '@typescript-eslint/member-ordering': 'error',
        '@typescript-eslint/no-empty-function': 'off',
        '@typescript-eslint/no-empty-interface': 'error',
        '@typescript-eslint/no-inferrable-types': 'error',
        '@typescript-eslint/no-misused-new': 'error',
        '@typescript-eslint/no-non-null-assertion': 'error',
        '@typescript-eslint/no-use-before-declare': ['error', { functions: true, classes: true, variables: true }],
        '@typescript-eslint/prefer-function-type': 'error',
        '@typescript-eslint/quotes': ['error', 'single'],
        '@typescript-eslint/semi': ['error', 'always'],
        '@typescript-eslint/type-annotation-spacing': 'error',
        '@typescript-eslint/unified-signatures': 'error',
        'arrow-body-style': 'error',
        camelcase: 'off',
        'capitalized-comments': 'error',
        'constructor-super': 'error',
        curly: 'error',
        'dot-notation': 'off',
        'eol-last': 'error',
        eqeqeq: ['error', 'smart'],
        'guard-for-in': 'error',
        'id-blacklist': 'off',
        'id-match': 'off',
        'import/no-deprecated': 'warn',
        'max-classes-per-file': ['error', 1],
        'max-len': [
            'error',
            {
                code: 140
            }
        ],
        'no-bitwise': 'error',
        'no-caller': 'error',
        'no-console': [
            'error',
            {
                allow: [
                    'log',
                    'warn',
                    'dir',
                    'timeLog',
                    'assert',
                    'clear',
                    'count',
                    'countReset',
                    'group',
                    'groupEnd',
                    'table',
                    'dirxml',
                    'error',
                    'groupCollapsed',
                    'Console',
                    'profile',
                    'profileEnd',
                    'timeStamp',
                    'context'
                ]
            }
        ],
        'no-debugger': 'error',
        'no-empty': 'off',
        'no-eval': 'error',
        'no-fallthrough': 'error',
        'no-new-wrappers': 'error',
        'no-shadow': [
            'error',
            {
                hoist: 'all'
            }
        ],
        'no-throw-literal': 'error',
        'no-trailing-spaces': 'error',
        'no-undef-init': 'error',
        'no-underscore-dangle': 'off',
        'no-unused-expressions': 'error',
        'no-unused-labels': 'error',
        'no-var': 'error',
        'prefer-const': 'error',
        radix: 'error',
        'spaced-comment': 'error',
        '@typescript-eslint/tslint/config': [
            'error',
            {
                rules: {
                    'component-class-suffix': [true, 'Component', 'View', 'Routing'],
                    'contextual-lifecycle': true,
                    'directive-class-suffix': true,
                    'import-blacklist': [true, 'rxjs/Rx'],
                    'import-spacing': true,
                    'no-host-metadata-property': true,
                    'no-input-rename': true,
                    'no-inputs-metadata-property': true,
                    'no-output-on-prefix': true,
                    'no-output-rename': true,
                    'no-outputs-metadata-property': true,
                    'no-redundant-jsdoc': true,
                    'one-line': [true, 'check-open-brace', 'check-catch', 'check-else', 'check-whitespace'],
                    'template-banana-in-box': true,
                    'template-no-negated-async': true,
                    'use-component-view-encapsulation': true,
                    'use-lifecycle-interface': true,
                    'use-pipe-decorator': true,
                    'use-pipe-transform-interface': true,
                    'no-unused-vars': ['error', { vars: 'all', args: 'after-used', ignoreRestSiblings: false }],
                    whitespace: [true, 'check-branch', 'check-decl', 'check-operator', 'check-separator', 'check-type']
                }
            }
        ]
    }
};

`
Run Code Online (Sandbox Code Playgroud)

除了删除规则之外,您知道如何解决这个问题吗?

谢谢

Dev*_*hra 14

根据这个页面,这条规则是不鼓励的,因为现代 TypeScript 不使用它并且计算速度很慢。所以你应该删除规则。

但是,如果您仍然想继续使用它,则可以尝试类似 { "no-use-before-define": ["error", { "variables": false }] }

您可以在此处阅读有关此内容的更多信息

  • 您发送的链接中哪里有这样的说法?我读过它,但没有看到不鼓励它与打字稿一起使用的参考文献。 (2认同)

小智 13

重新启动您的Visual Studio Code.
它可能会消除此错误。我和这个开发者做了同样的事情。

  • 不要发布仅链接到另一个答案的答案,而是[标记问题](/help/privileges/flag-posts) 作为重复项。 (5认同)

Nor*_*ern 10

对于那些在这里用谷歌搜索的人来说,如果您遇到一些@typescript-eslint/**规则未找到的问题,很可能是因为您使用的是过时的软件包。

这里我用@typescript-eslint/eslint-plugin作为例子。它可能不是您的直接依赖项,请用于npm ls @typescript-eslint/eslint-plugin找出您正在使用的确切版本。并尝试更新到最新。

  • 这正是我困扰了一段时间的问题 - 尽管我用来存储共享 ESLint 配置的包在“4.6”处有“eslint-plugin”,但我安装该包的应用程序在“4.6”处有“eslint-plugin” `2.33` 正在被使用,非常感谢! (2认同)

NeE*_* TK 8

Visual Studio 通常在依赖项更新后开始发出此警告。

\n

使用shift++command \xe2\x8c\x98 P运行Restart Extension Host从那里运行解决了我的问题。

\n