Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix 'Definition for rule '@typescript-eslint/no-use-before-declare' was not found.eslint(@typescript-eslint/no-use-before-declare)'

I am new to eslint and I cannot figure out how to solve this issue. The beginning of my imports is always underlined with a red line. It complains about the definition not being found for the specified rule. I would like to keep the rule in place as it is seems it will be otherwise useful. enter image description here.

For my .eslintrc.js file I have the following rules set up:

`

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']
                }
            }
        ]
    }
};

`

Any idea how to fix this other than removing the rule?

Thank you

like image 791
O.MeeKoh Avatar asked Nov 28 '19 07:11

O.MeeKoh


Video Answer


2 Answers

Well according to this page, this rule is discouraged as modern TypeScript does not use it and is slow to compute. So you should remove the rule.

If however you still want to keep using it, you can try something like { "no-use-before-define": ["error", { "variables": false }] }

You can read more about this here

like image 141
Devanshi Mishra Avatar answered Oct 14 '22 19:10

Devanshi Mishra


Restart your Visual Studio Code.
It may eliminate this error. Me and this dev did the same thing.

like image 20
Dálcio Macuete Garcia Avatar answered Oct 14 '22 21:10

Dálcio Macuete Garcia