ESLint couldn't find the plugin "eslint-plugin-@typescript-eslint"
Solution 1
Solution was simply to upgrade to the latest version of eslint
Solution 2
Not sure if it's still not resolved. But adding "root": true
to my .eslintrc.json
helped me.
Solution 3
For any future readers who might be facing this issue, in my case I was working with a multi-stage Docker build based on the node:alpine
image. The multi-stage build was meant to create a separation between the app's dependencies
and the devDependencies
(in package.json
).
At some point in creating my Dockerfile
, which underwent quite a few modifications over several hours, I added the following line towards the beginning of my Dockerfile
:
ENV NODE_ENV production
This causes npm
to ignore the devDependencies
packages, which in turn causes ESLint to fail (because it isn't installed).
I moved the environment variable declaration to my final (release) build stage, where I originally wanted it, and then npm
installed all required packages and ESLint ran successfully.
Hopefully this saves someone some precious time.
Solution 4
Issues can cause this:
- Outdated ESLint.
- ESLint installed globally and locally at the same time. Solution.
- Missing
.eslintrc
config file from the project folder. Solution:npx eslint --init
- Additional
node_modules
folder in the project-parent folder outside your project. - Additional
.eslintrc
in the project-parent folder outside your project. - Wrong package config. Read more.
Solution 5
I just faced this issue on a large monorepo, found two solutions that fixed it for us:
{
"scripts": {
"lint": "eslint src --resolve-plugins-relative-to ."
}
}
If you use yarn workspace, yarn run
could also do the trick:
{
"scripts": {
"lint": "yarn run eslint src"
}
}
Related videos on Youtube
James Mulholland
I used to be a philosophy student, but now I code.
Updated on July 09, 2022Comments
-
James Mulholland almost 2 years
I'm not sure if there's a bug with something I'm using or whether I've just set something up wrong here, but I'm getting this error from eslint when running
eslint src --fix
about "eslint-plugin-@typescript-eslint"I've specified the plugin as listed in the @TypeScript-eslint docs but I'm getting this weird error where eslint is trying to add 'eslint-plugin-' to the start of the plugin name (the package name is
@typescript-eslint/eslint-plugin
)I'm using Gatsby and the accompanying TypeScript plugin.
Error
$ eslint src --fix Oops! Something went wrong! :( ESLint: 4.19.1. ESLint couldn't find the plugin "eslint-plugin-@typescript-eslint". This can happen for a couple different reasons: 1. If ESLint is installed globally, then make sure eslint-plugin-@typescript-eslint is also installed globally. A globally-installed ESLint cannot find a locally-installed plugin. 2. If ESLint is installed locally, then it's likely that the plugin isn't installed correctly. Try reinstalling by running the following: npm i eslint-plugin-@typescript-eslint@latest --save-dev
.eslintrc.js:
module.exports = { parser: '@typescript-eslint/parser', parserOptions: { ecmaFeatures: { jsx: true, }, ecmaVersion: 2018, sourceType: 'module', }, env: { browser: true, node: true, es6: true, 'jest/globals': true, }, plugins: ['@typescript-eslint', 'react', 'jest'], extends: [ 'standard', 'plugin:react/recommended', 'plugin:@typescript-eslint/recommended', 'plugin:jest/recommended', 'plugin:prettier/recommended', // 'eslint-config-prettier', // must be last 'prettier/@typescript-eslint', ], rules: { 'react/prop-types': 0, 'jsx-quotes': ['error', 'prefer-single'], 'react/no-unescaped-entities': 0, }, settings: { react: { version: 'detect', }, linkComponents: [ // Components used as alternatives to <a> for linking, eg. <Link to={ url } /> 'Hyperlink', { name: 'Link', linkAttribute: 'to' }, ], }, }
package.json
{ "name": "jmulholland.com", "description": "My personal website", "license": "MIT", "scripts": { "dev": "gatsby develop", "build": "gatsby build", "serve": "gatsby serve", "lint": "eslint src --fix", "prettier": "prettier \"**/*.+(js|jsx|ts|tsx|json|css|md|mdx|graphql)\"", "format": "yarn prettier --write", "type-check": "tsc --noEmit", "validate": "yarn lint && yarn prettier --list-different" }, "dependencies": { "gatsby": "^2.1.4", "gatsby-plugin-react-helmet": "^3.0.6", "gatsby-plugin-styled-components": "^3.0.5", "gatsby-plugin-typescript": "^2.0.10", "gatsby-plugin-typography": "^2.2.7", "gatsby-remark-prismjs": "^3.2.4", "gatsby-source-contentful": "^2.0.29", "gatsby-transformer-remark": "^2.3.0", "prismjs": "^1.15.0", "prop-types": "^15.7.2", "react": "^16.8.2", "react-dom": "^16.8.2", "react-helmet": "^5.2.0", "react-typography": "^0.16.18", "styled-components": "^4.1.3", "typography": "^0.16.18" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^1.4.2", "@typescript-eslint/parser": "^1.4.2", "babel-jest": "^24.1.0", "babel-plugin-styled-components": "^1.10.0", "babel-preset-gatsby": "^0.1.8", "dotenv": "^6.0.0", "eslint": "^4.19.1", "eslint-config-prettier": "^4.1.0", "eslint-config-standard": "^12.0.0", "eslint-plugin-import": "^2.16.0", "eslint-plugin-jest": "^22.3.0", "eslint-plugin-jsx-a11y": "^6.2.1", "eslint-plugin-node": "^8.0.1", "eslint-plugin-prettier": "^3.0.1", "eslint-plugin-promise": "^4.0.1", "eslint-plugin-react": "^7.11.1", "eslint-plugin-standard": "^4.0.0", "faker": "^4.1.0", "husky": "^1.3.1", "jest": "^24.1.0", "lint-staged": "^8.1.5", "prettier": "^1.16.4", "typescript": "^3.3.3333" }, "husky": { "hooks": { "pre-commit": "lint-staged" } } }
-
golopot almost 5 years
-
-
igauravsehrawat over 4 yearsI am facing exact problem. Where you using
eslint
globally? -
James Mulholland over 4 yearsI don't use eslint globally
-
misterhtmlcss almost 3 yearsWouldn't his existing solution of using
.eslintrc.js
also work? -
Babak almost 3 yearsI don't see any reason why it wouldn't.
-
MrDywar over 2 yearsWhat the "root" is, and why it may help you read - eslint.org/docs/user-guide/configuring/…
-
patriot10 over 2 yearsThanks, @MrDywar! That is very useful info!
-
Elvin about 2 yearsEventually, I saw this response, thank you so much )
-
Jamie Hutber about 2 yearsI'm using the latest version and sadly its not fixing it.