Testing with Jest failed with Error: Error watchin

2019-04-04 16:57发布

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?

5条回答
Animai°情兽
2楼-- · 2019-04-04 17:24

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.

查看更多
女痞
3楼-- · 2019-04-04 17:28

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

brew postinstall watchman 

will work

查看更多
▲ chillily
4楼-- · 2019-04-04 17:35

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

查看更多
虎瘦雄心在
5楼-- · 2019-04-04 17:41

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.

查看更多
小情绪 Triste *
6楼-- · 2019-04-04 17:46

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.

查看更多
登录 后发表回答