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?
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 runsudo chown -R $(whoami):staff ~/Library/LaunchAgents
to give the permission.For me it was a permission problem, when you install watchman with homebrew is says you should try brew postinstall watchman. You will notice the permission error when you do this.
Error: Permission denied - /usr/local/var/run/watchman sudo chown -R "$USER":admin /usr/local/var/run
will solve the permission problem then
will work
This section of create-react-app's README describes possible ways to deal with this pesky issue.
I personally had to reinstall watchman - and tests are running again without a hitch
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 usingwatchman
. So I guesswatchman
is not necessary.What fixed this for me is to upgrade Jest to the lastest version using
npm install --save-dev jest@latest
.Do you have watchman installed? I recently had a colleague spill water in my laptop, so after migrating projects etc to a new laptop I had a similar issue. I realised after a bit of head-scratching that i just needed to run
brew install watchman
, assuming that you have homebrew of course.