React Native + Jest EMFILE: too many open files error

I'm running windows in powershell. Also used Git Bash and had similar problems. I updated my package.json as follows:

  "devDependencies": {
    "jest-cli": "^0.8.2",
  "jest": {
    "testPathDirs": ["__tests__"],
    "testPathIgnorePatterns": [
  "scripts": {
    "test": "jest"

Note that "testPathDirs": ["__tests__"], is the directory I place all my tests in.

Now I can run npm test without an issue. Ultimately it seems Jest is navigating the /node_modules/ directory which should be excluded.

I encountered this problem and fixed it by running

brew upgrade watchman

I had the same problem with a small vuejs project. In my case the fix was just a small configuration property: I put this in to my jest.config.js

  watchPathIgnorePatterns: ['node_modules'],

For anyone withe the same problem with vuejs. Here's my full jest.config.js file:

module.exports = {
  preset: '@vue/cli-plugin-unit-jest',
  transformIgnorePatterns: ['/node_modules/(?!(leaflet))'],
  watchPathIgnorePatterns: ['node_modules'],
  testMatch: [

Short answer: adding 'ulimit -n 4096' to ~.bash_profile and opening a new terminal window resolved my issue.

The answer had to do with me not setting the ulimit properly.

sudo ulimit -n 10240

on my Mac silently doesn't change the ulimit. I had originally thought it was not doing anything because 10240 is not an increment of 1024. But it also didn't do anything when I tried 2048, 4096, etc.

So, what is "the" solution?

  • ulimit -n (without a number) will tell you what the current value is
  • for me, typing sudo ulimit -n 2048 in a terminal window did NOT change the ulimit (no matter what number I tried)
  • adding 'ulimit -n 4096' to ~.bash_profile and opening a new terminal solved the problem