Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

eslint-config-react-app is not compatible with ESLint 8 #11549

Open
kirill-konshin opened this issue Oct 13, 2021 · 19 comments
Open

eslint-config-react-app is not compatible with ESLint 8 #11549

kirill-konshin opened this issue Oct 13, 2021 · 19 comments

Comments

@kirill-konshin
Copy link

Describe the bug

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/rules/no-unused-expressions' is not defined by "exports" in /xxx/node_modules/eslint/package.json
    at throwExportsNotFound (internal/modules/esm/resolve.js:290:9)
    at packageExportsResolve (internal/modules/esm/resolve.js:513:3)
    at resolveExports (internal/modules/cjs/loader.js:437:36)
    at Function.Module._findPath (internal/modules/cjs/loader.js:477:31)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:872:27)
    at Function.Module._load (internal/modules/cjs/loader.js:730:27)
    at Module.require (internal/modules/cjs/loader.js:957:19)
    at require (/xxx/node_modules/v8-compile-cache/v8-compile-cache.js:161:20)
    at Object.<anonymous> (/xxx/node_modules/eslint-plugin-flowtype/dist/rules/noUnusedExpressions.js:8:51)
    at Module._compile (/xxx/node_modules/v8-compile-cache/v8-compile-cache.js:194:30)

Looks like eslint-plugin-flowtype/dist/rules/noUnusedExpressions.js imports file that's not exported explicitly.

Environment

Eslint 8.0.0
eslint-plugin-flowtype: 6.1.0
eslint-config-react-app: 6.0.0

Expected behavior

No errors

Actual behavior

Error from the above

Reproducible demo

Clone https://github.com/ringcentral/ringcentral-javascript/tree/eslint8 (branch eslint8)

yarn install
yarn test
@hanorine
Copy link

It would be great to have this support in the upcoming v5.

@oeduardoal
Copy link

Same behavior here!

Eslint 8.0.0
eslint-plugin-flowtype: 6.1.0
eslint-config-react-app: 6.0.0

➜ yarn run eslint packages --ext .ts,.tsx --config .eslintrc
yarn run v1.22.10
$ /Users/oeduardoal/projects/gb/flora/node_modules/.bin/eslint packages --ext .ts,.tsx --config .eslintrc

Oops! Something went wrong! :(

ESLint: 8.0.1

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Failed to load plugin 'flowtype' declared in '--config » eslint-config-react-app': Package subpath './lib/rules/no-unused-expressions' is not defined by "exports" in /Users/oeduardoal/projects/gb/flora/node_modules/eslint/package.json
    at new NodeError (node:internal/errors:371:5)
    at throwExportsNotFound (node:internal/modules/esm/resolve:413:9)
    at packageExportsResolve (node:internal/modules/esm/resolve:652:3)
    at resolveExports (node:internal/modules/cjs/loader:482:36)
    at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (/Users/oeduardoal/projects/gb/flora/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
    at Object.<anonymous> (/Users/oeduardoal/projects/gb/flora/node_modules/eslint-plugin-flowtype/dist/rules/noUnusedExpressions.js:8:51)
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

@tychenjiajun
Copy link

@jer-sen
Copy link

jer-sen commented Oct 19, 2021

Here is a dirty fix that you can use with patch-package:

diff --git a/node_modules/eslint-plugin-flowtype/dist/rules/noUnusedExpressions.js b/node_modules/eslint-plugin-flowtype/dist/rules/noUnusedExpressions.js
index 6171456..f1a9d72 100644
--- a/node_modules/eslint-plugin-flowtype/dist/rules/noUnusedExpressions.js
+++ b/node_modules/eslint-plugin-flowtype/dist/rules/noUnusedExpressions.js
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
   value: true
 });
 
-var _noUnusedExpressions = require('eslint/lib/rules/no-unused-expressions');
+var _noUnusedExpressions = require('eslint/use-at-your-own-risk').builtinRules.get('no-unused-expressions');
 
 var _noUnusedExpressions2 = _interopRequireDefault(_noUnusedExpressions);
 

@krishnaTORQUE
Copy link

I am also facing this issue

@krimple
Copy link

krimple commented Oct 26, 2021

Why not back off eslint-config-react-app back to 7.x of eslint in the released version until 8.x is able to be integrated? It makes doing upgrades a bit of a mess. Just a suggestion.

@Avasam
Copy link

Avasam commented Nov 5, 2021

Temporary workaround: npm i eslint-plugin-flowtype@latest eslint-plugin-import@latest eslint-plugin-react-hooks@next --force --save-dev

@efstathiosntonas
Copy link

thanks @Avasam that did the trick

@naXa777
Copy link

naXa777 commented Nov 26, 2021

Temporary workaround for yarn: yarn add eslint-plugin-flowtype@latest eslint-plugin-import@latest eslint-plugin-react-hooks@next --force -D

@mikeislearning
Copy link

I just did yarn add -D eslint-plugin-flowtype@latest and that did the trick

@stale
Copy link

stale bot commented Jan 8, 2022

This issue has been automatically marked as stale because it has not had any recent activity. It will be closed in 5 days if no further activity occurs.

@stale stale bot added the stale label Jan 8, 2022
@kirill-konshin
Copy link
Author

kirill-konshin commented Jan 10, 2022

Looks like the issue has been fixed.

@stale stale bot removed the stale label Jan 10, 2022
pconrad added a commit to ucsb-cs156-w22/demo-spring-react-example-v2 that referenced this issue Feb 14, 2022
Heroku deploy was erroring with:
Failed to load plugin 'flowtype' declared in '.eslintrc.json » eslint-config-react-app': Cannot find module 'eslint/use-at-your-own-risk'
Solution was:

  npm i eslint-plugin-flowtype@latest eslint-plugin-import@latest eslint-plugin-react-hooks@next --force --save-dev

As documented here: facebook/create-react-app#11549
@pconrad
Copy link

pconrad commented Feb 14, 2022

It is still happening for me... and none of the fixes above are working.

pconrad added a commit to ucsb-cs156-w22/demo-spring-react-example-v2 that referenced this issue Feb 14, 2022
Heroku deploy was erroring with:
Failed to load plugin 'flowtype' declared in '.eslintrc.json » eslint-config-react-app': Cannot find module 'eslint/use-at-your-own-risk'
Solution was:

  npm i eslint-plugin-flowtype@latest eslint-plugin-import@latest eslint-plugin-react-hooks@next --force --save-dev

As documented here: facebook/create-react-app#11549
pconrad added a commit to ucsb-cs156-w22/demo-spring-react-example-v2 that referenced this issue Feb 14, 2022
Heroku deploy was erroring with:
Failed to load plugin 'flowtype' declared in '.eslintrc.json » eslint-config-react-app': Cannot find module 'eslint/use-at-your-own-risk'
Solution was:

  npm i eslint-plugin-flowtype@latest eslint-plugin-import@latest eslint-plugin-react-hooks@next --force --save-dev

As documented here: facebook/create-react-app#11549
pconrad added a commit to ucsb-cs156-w22/demo-spring-react-example-v2 that referenced this issue Feb 14, 2022
Heroku deploy was erroring with:
Failed to load plugin 'flowtype' declared in '.eslintrc.json » eslint-config-react-app': Cannot find module 'eslint/use-at-your-own-risk'
Solution was:

  npm i eslint-plugin-flowtype@latest eslint-plugin-import@latest eslint-plugin-react-hooks@next --force --save-dev

As documented here: facebook/create-react-app#11549
@instantlinux
Copy link

instantlinux commented Feb 14, 2022

This fix is really needed now that react-scripts deprecated version 4.0.3 (to my knowledge there will not be a 4.0.4 patch release: we need a way to install 5.0.x). That version has a dependency on immer 8.0.1 with vulnerability CVE-2020-28477, node-forge 0.10.0 with vulnerability CVE-2022-0122, and others. If the issue is "fixed", I sure am having trouble following the thread above or coming up with a way to update my package.json. Here's what I just gave up trying:

  • Update eslint-config-react-app from 6.0.0 to 7.0.0
  • Update eslint from 7.32.0 to 8.9.0
  • Update react-scripts from 4.0.3 to 5.0.0

I tried some of the eslint-plugin-xxx items to devDependencies as well but always hit the error cited in the issue description.

@instantlinux
Copy link

Spent a few more hours on this, it's really impossible to come up with a working package.json. This is what I want to have working:

  "dependencies": {
    "eslint-config-react-app": "^7.0.0",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-router": "^5.2.0",
    "react-router-dom": "^5.2.0",
    "worker-loader": "^3.0.8"
  },
  "devDependencies": {
    "@babel/cli": "^7.17.0",
    "@babel/core": "^7.17.2",
    "@babel/plugin-proposal-private-property-in-object": "^7.16.7",
    "@babel/preset-env": "^7.16.11",
    "@babel/preset-react": "^7.16.7",
    "babel-eslint": "^10.1.0",
    "eslint": "^8.9.0",
    "eslint-plugin-react": "^7.28.0",
    "jest-junit": "^12.0.0",
    "react-scripts": "^5.0.0"
  },

The number of permutations I've tried with different versions is about 50, and it's just way too much of a headache iterating on a simple issue like dependency updates. How do we get attention paid to this nightmare we face as react developers?

@Anishx
Copy link

Anishx commented Mar 24, 2022

Any update on the issue ? Still having errors

@baba43
Copy link

baba43 commented Jun 14, 2022

I don't understand why this is causing permanent issues, also for projects that I try to upgrade.

@ohcibi
Copy link

ohcibi commented Jan 31, 2023

Nice. Figured I search for eslint before posting an issue to tell that eslint-config-react-app is not providing a new-config-file-format-compatible configuration for eslint. Found 197 open issues with 'eslint'. Half of them stale. At least 3 issues about the incompatibility, one of them also stale. React truly is the best framework in the world (I'm german and that was sarcasm)

@FFdhorkin
Copy link

For me, I ended up needing to do this in Package.json:

  "overrides": {
    "eslint": "^8.40.0",
    "eslint-plugin-flowtype": "^8.0.3",
    "@typescript-eslint/eslint-plugin": "^5.59.2",
    "@typescript-eslint/parser": "^5.59.2"
  }

Probably would be better to scope those overrides, but I'm not too worried since these are just for linting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests