React-native: Packager fails on macOS 10.12 Sierra

Created on 9 Aug 2016  路  38Comments  路  Source: facebook/react-native

I have upgraded to the macOS Sierra beta yesterday, and the React Native Packager seems to fail. I've tried to reinstall the dependencies, but no use.

The output of the packager is this:

[11:45:02 AM] <START> Building Dependency Graph
[11:45:02 AM] <START> Crawling File System
[Hot Module Replacement] Server listening on /hot

React packager ready.

2016-08-09 11:45 node[6397] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-08-09 11:45 node[6397] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-08-09 11:45 node[6397] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
 ERROR  watch null EMFILE
{"code":"EMFILE","errno":"EMFILE","syscall":"watch null","filename":null}
Error: watch null EMFILE
    at exports._errnoException (util.js:873:11)
    at FSEvent.FSWatcher._handle.onchange (fs.js:1217:21)

The only reference to that specific error I have found is this old issue on the Node 0.10 repo's. I have tried the 'fix' in that topic, namely increasing the open file references limit. That didn't work.

The issue occurs on both Node 4.4.7 and 6.3.1, on macOS Sierra 10.12 on a MBP 2015 15". Does anyone know what is going on here?

Locked

Most helpful comment

Credit to @passwd for figuring this out

We were able to get it to work by increasing the max file limit and moving to watchman v4.6.0

here are the steps we followed:

1. increase max file limt

# check open file limit
sysctl kern.maxfiles

# edit sysctl
sudo vim /etc/sysctl.conf

# add these two lines
kern.maxfiles=10485760
kern.maxfilesperproc=1048576

# reboot
sudo reboot

# check new file limit
sysctl kern.maxfiles

2. upgrade to watchman 4.6

# clone repo
git clone https://github.com/facebook/watchman.git

# change to master branch
git checkout -b v4.6.0 v4.6.0

# run compiler
./autogen.sh
./configure --enable-lenient --without-pcre --with-python
make
sudo make install

# check watchman version
watchman -v

# result should be 4.6.0

All 38 comments

Just got this as well, also on sierra

me as well, also on sierra

Credit to @passwd for figuring this out

We were able to get it to work by increasing the max file limit and moving to watchman v4.6.0

here are the steps we followed:

1. increase max file limt

# check open file limit
sysctl kern.maxfiles

# edit sysctl
sudo vim /etc/sysctl.conf

# add these two lines
kern.maxfiles=10485760
kern.maxfilesperproc=1048576

# reboot
sudo reboot

# check new file limit
sysctl kern.maxfiles

2. upgrade to watchman 4.6

# clone repo
git clone https://github.com/facebook/watchman.git

# change to master branch
git checkout -b v4.6.0 v4.6.0

# run compiler
./autogen.sh
./configure --enable-lenient --without-pcre --with-python
make
sudo make install

# check watchman version
watchman -v

# result should be 4.6.0

@mc-lean you're the best!!!

@mc-lean Nice! :)

Are there any plans to update watchman in the RN-repo so RN works out-of-the-box again?

@goldenice I would guess that it is. Sierra is due out in September so I would think they would plan to support it out of the box soon

@mc-lean Thanks 馃憤

Great, it works. 馃憤

thanks, you made my day :)

System doesn't report the updated value when i run sysctl kern.maxfiles (reports 300k) but upgraded to watchman 4.7.0 with brew install watchman and it seems to work

@jalmaas value updates only after reboot. Worked for me on GM.

But indeed, just updating to watchman 4.6.0+ seems to be enough.

it didn't update after reboot here

React Native works fine with relatively up-to-date software. These are the settings that are working for me:

$ node --version
v6.5.0
$ watchman --version
4.6.0
$ sysctl kern.maxfiles
kern.maxfiles: 16384
$ sysctl kern.maxfilesperproc
kern.maxfilesperproc: 10240

unfortunately it does not work for me

macOS 10.12 (16A319)

$ node --version
-> v6.5.0
$ watchman --version
-> 4.6.0
$ sysctl kern.maxfiles
-> 10485760
$ sysctl kern.maxfilesperproc
-> 1048576
React packager ready.

2016-09-13 17:10 node[8707] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-09-13 17:10 node[8707] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-09-13 17:10 node[8707] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-09-13 17:10 node[8707] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-09-13 17:10 node[8707] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-09-13 17:10 node[8707] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-09-13 17:10 node[8707] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-09-13 17:10 node[8707] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
 ERROR  Error watching file for changes: EMFILE
{"code":"EMFILE","errno":"EMFILE","syscall":"Error watching file for changes:","filename":null}
Error: Error watching file for changes: EMFILE
    at exports._errnoException (util.js:1026:11)
    at FSEvent.FSWatcher._handle.onchange (fs.js:1406:11)

Isn't working for me 馃憥

Versions:

$node --version
v6.6.0

$watchman --version
4.7.0

$sysctl kern.maxfiles
kern.maxfiles: 10485760

$sysctl kern.maxfilesperproc
kern.maxfilesperproc: 1048576

Log:

2016-09-19 15:25 node[989] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-09-19 15:25 node[989] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-09-19 15:25 node[989] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
 ERROR  Error watching file for changes: EMFILE
{"code":"EMFILE","errno":"EMFILE","syscall":"Error watching file for changes:","filename":null}
Error: Error watching file for changes: EMFILE
    at exports._errnoException (util.js:1036:11)
    at FSEvent.FSWatcher._handle.onchange (fs.js:1406:11)

This worked perfectly for me. Thanks!

Upgrading watchman solved the issue for us.

No luck :(

Upgrading watchman worked, brew didn't cooperate but heh..

$ git clone https://github.com/facebook/watchman.git
$ cd watchman
$ git checkout v4.7.0  # the latest stable release
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

I was checking watchman issues and found out this one: https://github.com/facebook/watchman/issues/358

When running watchman watch-list I got some permissions error.

chmod 0700 /usr/local/var/run/watchman/<USER>-state worked for me.

FINALLY!!!

I ran the watchman watch-list command, then the error suggested me to run chmod 0700 /usr/local/var/run/watchman/<USER>-state as @oscart said, then it worked!!

got the same result on Sierra

I get the following error when trying to compile the Watchman:

./autogen.sh: line 9: aclocal: command not found
./autogen.sh: line 11: automake: command not found
configure.ac:3: error: possibly undefined macro: AM_INIT_AUTOMAKE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:29: error: possibly undefined macro: AM_PROG_CC_C_O
configure.ac:30: error: possibly undefined macro: AM_PROG_AS
configure.ac:71: error: possibly undefined macro: AM_CONDITIONAL
configure.ac:113: error: possibly undefined macro: AM_PATH_PYTHON

I was able to resolve the compilation issue after installing automate: brew install automake

The project works in Simulator after following the steps from @mc-lean.

i ran brew install automake but still can't compile watchman

@sammosampson What errors are you getting?

After updating to OSX Sierra and XCode 8.1, I cannot compile any of the React-Native projects. I get the error that the OP had. At this point, I have not been able to resolve it. You may consider re-opening the issue.

Here is what it looks like when I try to compile the Snowflake starter project:

React packager ready.

2016-10-30 11:30 node31071 FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-10-30 11:30 node31071 FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-10-30 11:30 node31071 FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
ERROR watch null EMFILE
{"code":"EMFILE","errno":"EMFILE","syscall":"watch null","filename":null}
Error: watch null EMFILE
at exports._errnoException (util.js:856:11)
at FSEvent.FSWatcher._handle.onchange (fs.js:1296:21)

See http://facebook.github.io/react-native/docs/troubleshooting.html
for common problems and solutions.
~
Process terminated. Press to close the window

Similar errors show up when compiling some tutorials I had laying around (they worked under Sierra and XCode 7.3.1)

@artforlife I'm having exact same issue although not related specifically to react-native, I'm in the process of updating to xcode 8.1 as after update to macOS sierra I was unable to run tests which depend on fs, any help appreciated...

EDIT: please look at this, installing watchman fixed this issue for me

@bondarewicz Thanks for the idea. I have just tried downgrading to Xcode 7.3.1 and the problem still persists. This leads me to think that it lies not with Xcode but elsewhere. Perhaps the Development Tools is the problem.

My watchman version is already 4.7.0 ...

@artforlife have you tried reinstall ? We need to debug this issue as many had the same problem but there is no definite answer yet...

@bondarewicz I have tried reinstalling the watchman, but that didn't affect anything.

I have the following configurations:

OSX: Sierra
XCode: 8.1
NodeJS: 5.1.0
Watchman: 4.6.0
kern.maxfiles: 10485760

I used to following steps to fix the issue.

1) Run watchman watch-list
2) Received the following error:

2016-10-30T18:24:39,064: [3239527360] the permissions on /usr/local/var/run/watchman/userman-state allow others to write to it. Verify that you own the contents and then fix its permissions by running chmod 0700 /usr/local/var/run/watchman/userman-state

3) Followed the instruction in the error prompt above and ran

chmod 0700 /usr/local/var/run/watchman/userman-state

This fixed it. To summarize, it seems to have been a permissions problem on a Watchman directory.

Can confirm that this issue was related to tmux. After getting the error

2016-11-04 12:51 node[4311] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2016-11-04 12:51 node[4311] (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:1026:11)
    at FSEvent.FSWatcher._handle.onchange (fs.js:1406:11)
npm ERR! Test failed.  See above for more details.

from running react-native commands, I installed watchman, but continued to get the issue. Running react-native commands outside of tmux now works. I do not have jest installed. None of the other fixes mentioned here had any effect.

Solved for me with updating Xcode and installing watchman with brew (which is not possible with 7.x Xcode)

edit
Also sudo chown -R $(whoami) ~/

I followed most of the steps above including upgrading watchman, and increasing the max file limit, but what solved it for me was verifying permissions by running watchman watch-list and then following the directions it provided. Thanks @oscart and @hghinaglia!

updating watchman solved me the issue when i updated macOS Sierra

ERROR Error watching file for changes: EMFILE
{"code":"EMFILE","errno":"EMFILE","syscall":"Error watching file for changes:","filename":null}
Error: Error watching file for changes: EMFILE
at exports._errnoException (util.js:1036:11)
at FSEvent.FSWatcher._handle.onchange (fs.js:1406:11)

Note that this is also what happens if you don't have Watchman installed at all.

Was this page helpful?
0 / 5 - 0 ratings