Skip to content

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

Open

Description

@kirill-konshin

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

Activity

  1. hanorine commented on Oct 14, 2021

    @hanorine

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

  2. oeduardoal commented on Oct 14, 2021

    @oeduardoal

    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.
    
  3. tychenjiajun commented on Oct 19, 2021

    @tychenjiajun
  4. jer-sen commented on Oct 19, 2021

    @jer-sen

    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);
     
    
  5. krishnaTORQUE commented on Oct 26, 2021

    @krishnaTORQUE

    I am also facing this issue

  6. krimple commented on Oct 26, 2021

    @krimple

    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.

  7. Avasam commented on Nov 5, 2021

    @Avasam

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

  8. efstathiosntonas commented on Nov 11, 2021

    @efstathiosntonas

    thanks @Avasam that did the trick

  9. naXa777 commented on Nov 26, 2021

    @naXa777

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

  10. mikeislearning commented on Nov 29, 2021

    @mikeislearning

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

  11. stale commented on Jan 8, 2022

    @stale

    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.

  12. kirill-konshin commented on Jan 10, 2022

    @kirill-konshin
    Author

    Looks like the issue has been fixed.

  13. pconrad commented on Feb 14, 2022

    @pconrad

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

  14. instantlinux commented on Feb 14, 2022

    @instantlinux

    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.

  15. instantlinux commented on Feb 16, 2022

    @instantlinux

    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?

  16. Anishx commented on Mar 24, 2022

    @Anishx

    Any update on the issue ? Still having errors

  17. baba43 commented on Jun 14, 2022

    @baba43

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

  18. ohcibi commented on Jan 31, 2023

    @ohcibi

    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)

  19. dhorkin commented on May 6, 2023

    @dhorkin

    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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions