Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Testing with Jest failed with Error: Error watching file for changes: EMFILE

I tried to write a test for a React.js app. Everything was going fine but after making the directory tracked with Git(made a Git repo with it). The test fails with the error below

2017-01-15 05:05 node[1278] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2017-01-15 05:05 node[1278] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: Error watching file for changes: EMFILE
    at exports._errnoException (util.js:1022:11)
    at FSEvent.FSWatcher._handle.onchange (fs.js:1406:11)

I am sure that this is because of .git directory because when I remove .git directory it is running without the error. It seems that the exception occurs in watching the files. My development environment is MacOS 10.12.2 and Node 6.9.4. How can I resolve this issue?

like image 953
Colin Wang Avatar asked Jan 15 '17 04:01

Colin Wang


Video Answer


2 Answers

Oh, I am going to answer my question after hours of my struggling.
The best solution is to install the latest version of Watchman.
The old version of Watchman causes fsevents module throws the exception.

After installing watchman, optionally you can run sudo chown -R $(whoami):staff ~/Library/LaunchAgents to give the permission.

like image 182
Colin Wang Avatar answered Sep 23 '22 01:09

Colin Wang


I have ran into the same problem and upgrade watchman didn't fix this for me. Reading the documentation of Jest, you will find there is an option to disable using watchman. So I guess watchman is not necessary.

What fixed this for me is to upgrade Jest to the lastest version using npm install --save-dev jest@latest.

like image 27
nliu71 Avatar answered Sep 19 '22 01:09

nliu71