Reputation: 2156
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. .
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
Upvotes: 25
Views: 45577
Reputation: 1420
I had this problem when I upgraded from @typescript-eslint
5 to 6
just adding "plugin:@typescript-eslint/recommended"
to my eslintrc worked for me
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates"
],
Upvotes: 0
Reputation: 2695
Visual studio usually starts giving this warning after a dependency update.
Using shift + command ⌘ + P and running Restart Extension Host
from there solved the issue for me.
Upvotes: 8
Reputation: 1049
Restart your Visual Studio Code
.
It may eliminate this error.
Me and this dev did the same thing.
Upvotes: 13
Reputation: 2548
For those who googled here, if you encounter some issue with @typescript-eslint/**
rule not found issue, most likely is because you are using an outdated package.
Here I am using @typescript-eslint/eslint-plugin
as an example. It may not be your direct dependency, use npm ls @typescript-eslint/eslint-plugin
to find out the exact version you are using. And try to update it to latest.
Upvotes: 12
Reputation: 489
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
Upvotes: 18