create-react-app: Unknown option: base.configFile error when running tests

Note from Maintainers

This is reportedly an issue with npm, as you will find below.

Please install Yarn as it’s reportedly correctly hoisting packages, preventing this error.

If you’d like to continue using npm, run npm ls babel-core and remove offending packages that are relying on 6.x. Additionally, file a bug report with npm.


Is this a bug report?

Yes

Did you try recovering your dependencies?

Yes npm --version 6.4.1

Which terms did you search for in User Guide?

jest, test, babel, Unknown option: base.configFile

Environment

Environment: OS: macOS 10.14 Node: 8.10.0 Yarn: 1.6.0 npm: 6.4.1 Watchman: 4.9.0 Xcode: Xcode 10.0 Build version 10A255 Android Studio: Not Found

Packages: (wanted => installed) react: ^16.4.2 => 16.5.2 react-dom: ^16.4.2 => 16.5.2 react-scripts: 2.0.3 => 2.0.3

Steps to Reproduce

  1. Migrate from create-react-app v1.1.5 following the guide at https://github.com/facebook/create-react-app/releases
  2. Run the dev server and verify the app works correctly (npm start)
  3. Run all tests with npm test followed by a

Expected Behavior

Tests should run and complete

Actual Behavior

I get the following error on every test

Test suite failed to run

    ReferenceError: [BABEL] {redacted}/src/setupTests.js: Unknown option: base.configFile. Check out http://babeljs.io/docs/usage/options/ for more information about options.

    A common cause of this error is the presence of a configuration options object without the corresponding preset name. Example:

    Invalid:
      `{ presets: [{option: value}] }`
    Valid:
      `{ presets: [['presetName', {option: value}]] }`

    For more detailed information on preset configuration, please see https://babeljs.io/docs/en/plugins#pluginpresets-options.

      at Logger.error (node_modules/babel-core/lib/transformation/file/logger.js:41:11)
      at OptionManager.mergeOptions (node_modules/babel-core/lib/transformation/file/options/option-manager.js:226:20)
      at OptionManager.init (node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)
      at File.initOptions (node_modules/babel-core/lib/transformation/file/index.js:212:65)
      at new File (node_modules/babel-core/lib/transformation/file/index.js:135:24)
      at Pipeline.transform (node_modules/babel-core/lib/transformation/pipeline.js:46:16)

my setupTests.js file contains the following

import 'react-testing-library/cleanup-after-each';
import 'jest-dom/extend-expect';

Adding them to a fresh app doesn’t cause an issue.

Reproducible Demo

This is an internal project, but I’ll work to see if I can narrow it down at all and reproduce in a fresh install. So far I haven’t figured it out. I’m putting this issue up in the meantime to see if anyone else runs into it while migrating to v2. It also popped up at https://github.com/facebook/create-react-app/issues/5103#issuecomment-425722592, but clearing the node modules / lock / &c didn’t help, nor did upgrading to node v10.

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Reactions: 4
  • Comments: 58 (11 by maintainers)

Commits related to this issue

Most upvoted comments

@JaccoGoris Good to hear that! I also found that explicitly installing the bridge package with npm install -D babel-core@7.0.0-bridge.0 also fixes the issue without uninstalling jest-junit.

So I think there are 2 methods that you can try to fix this issue.

  1. remove package-lock.json, node_modules, and re-install packages.
  2. If method 1 does not solve, simply install babel-core@7.0.0-bridge.0 package ( preferably into your devDependencies ).

I recommend running npm ls babel-core to figure out which package is causing problem inside your dependency tree first.

Hi, @JaccoGoris I cloned your repo and got the same config error. At first I thought it could be node issue so used 6.14.4, 7.10.1, but all failed.

I had the same issue with my repo and I found that the issue could be from babel-core still using 6.26.3 for some packages so I compared the dependency tree of both my project and yours.

$ npm ls babel-core

My project:

└─┬ react-scripts@2.0.3
  ├── babel-core@7.0.0-bridge.0
  └─┬ jest@23.6.0
    └─┬ jest-cli@23.6.0
      ├─┬ jest-config@23.6.0
      │ └─┬ babel-core@6.26.3
      │   └─┬ babel-register@6.26.0
      │     └── babel-core@6.26.3
      └─┬ jest-runtime@23.6.0
        └── babel-core@6.26.3

Your project:

├─┬ jest-junit@5.2.0
│ └─┬ jest-config@23.6.0
│   └─┬ babel-core@6.26.3
│     └─┬ babel-register@6.26.0
│       └── babel-core@6.26.3  deduped
└─┬ react-scripts@2.0.4
  ├── babel-core@7.0.0-bridge.0
  └─┬ jest@23.6.0
    └─┬ jest-cli@23.6.0
      └─┬ jest-runtime@23.6.0
        └── babel-core@6.26.3  deduped

I found that on my project, babel-core@7.0.0-bridge.0 is on the top level of the dependency tree, above any other subtrees that uses babel 6.26.3.

So I did following and npm test worked like a charm.

  • uninstall jest-junit
  • remove package-lock.json
  • remove node_modules
  • run npm install again

And the dependency tree of babel-core should look like following when you run npm ls babel-core:

└─┬ react-scripts@2.0.4
  ├── babel-core@7.0.0-bridge.0
  └─┬ jest@23.6.0
    └─┬ jest-cli@23.6.0
      ├─┬ jest-config@23.6.0
      │ └─┬ babel-core@6.26.3
      │   └─┬ babel-register@6.26.0
      │     └── babel-core@6.26.3
      └─┬ jest-runtime@23.6.0
        └── babel-core@6.26.3

Hope this helps.

Edit: seems like explicitly installing babel-core@7.0.0-bridge.0 also solves the issue. And make sure you clear jest cache before re-trying. With jest cache every subsequent test will succeed

$ npm install -D babel-core@7.0.0-bridge.0

npm ls babel-core will show following:

├── babel-core@7.0.0-bridge.0
├─┬ jest-junit@5.2.0
│ └─┬ jest-config@23.6.0
│   └─┬ babel-core@6.26.3
│     └─┬ babel-register@6.26.0
│       └── babel-core@6.26.3
└─┬ react-scripts@2.0.4
  ├── babel-core@7.0.0-bridge.0
  └─┬ jest@23.6.0
    └─┬ jest-cli@23.6.0
      └─┬ jest-runtime@23.6.0
        └── babel-core@6.26.3

npm ls babel-core accused other libraries of being dependent on earlier versions of babel-core.

yarn install worked. Definitely a problem with npm.

I was also able to fix this issue by deleting package-lock.json and node_modules folder and running npm install again.

I had to replace "babel-core": "^6.26.3" to "babel-core": "7.0.0-bridge.0" in my package.json to make it works.

@JeffBaumgardt I’m not sure I follow how this is a problem with Jest. The install works perfectly fine when using Yarn, and in some cases when you get npm to behave in certain ways. This issue definitely lies on npm’s side.

Can someone please install Yarn, use Yarn instead of npm, and see if that fixes the problem?

I had the same issue, using “react-scripts”: “^1.1.5” solved the problem.

If you delete package-lock.json and node_modules and the problem still won’t go away after a fresh install, double check package.json for an older explicit babel-core entry (mine had “^6.26.0” for some reason). You can remove it for Babel 7 since that became a dependency of react-scripts. Then go through the delete/reinstall steps again.

@arnvol Oh yeah I know but in my case, I figured out I could go without jest-junit and it was much easier to just remove it than to add the babel bridge 😃

@jambyung thanks a lot! 2. method worked.

https://github.com/JaccoGoris/jest-cra-app here’s a link to a small fresh project with the repro. hope this helps!

I have the same issue, even after nuking my node_modules and package.lock which info can I help you guys with to help work this out?

Nothing new to bring to the table, but I’m having the same issue.

I was repeatedly having this problem yesterday, even with the above workaround. I added the dependencies one by one back today and was able to add them back all in without incident, so who knows what npm was having trouble with.

I had the same issue, and I’m using the same setupTests.js file, though removing this file has no effect on the outcome.

I was able to get rid of this error by deleting package-lock and reinstalling.