2015-10-05 216 views
3

我剛開始我的第一反應以下這個本機應用程序:陣營機錯誤:錯誤:看EMFILE

http://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript

然而,當我運行構建我得到如下:它很重要?

[5:24:30 PM] <START> Building Dependency Graph 
[5:24:30 PM] <START> Crawling File System 
ERROR watch EMFILE 
{"code":"EMFILE","errno":"EMFILE","syscall":"watch"} 
Error: watch EMFILE 
    at exports._errnoException (util.js:746:11) 
    at FSWatcher.start (fs.js:1172:11) 
    at Object.fs.watch (fs.js:1198:11) 
    at NodeWatcher.watchdir (/Users/me/PhpstormProjects/foo/node_modules/react-native/node_modules/sane/src/node_watcher.js:144:20) 
    at Walker.<anonymous> 

回答

1

EMFILE是當單個進程打開太多文件時發生的錯誤。我本週也遇到了與其他技術堆棧相同的問題。您可以通過使用ulimit命令增加打開文件的限制來避免該錯誤。

ulimit 4096 # for instance 

你應該試着找出爲什麼這麼多文件打開。也許你的觀看任務正在觀看node_modules文件夾等文件。

希望它可以幫助

+0

難道你試試這個呢? https://github.com/facebook/react-native/issues/910 – 4lejandrito

+0

我沒有看守人安裝,我想或運行其過程。 – SuperUberDuper

+3

根據消息來源[這裏](https://github.com/facebook/react-native/blob/1d1386e7355fcd269aefea415e3a174b529917da/packager/react-packager/src/FileWatcher/index.js#L21)react-native會使用watchman if可用的路徑似乎是首選。嘗試安裝它('brew install watchman')並查看是否解決了您的問題。 – 4lejandrito

6

我遇到了同樣的問題,更新到MacOS的塞拉利昂,然而,事實證明,守望是罪魁禍首。通過查看日誌,我偶然發現了許多奇怪的權限問題。

正如github/facebook/react-native#9943所述,重新安裝看守員解決了這個問題。

rm -rf /usr/local/var/run/watchman/ && brew uninstall watchman && brew install watchman 
+1

謝謝。這有助於 – hangvirus

+1

我之前在我的Mac Sierra上發生過此錯誤。卸載看守,並再次安裝它,錯誤得到修復。但現在,熱重新加載不起作用。執行上述命令,修復熱重新加載並立即開始反映變化。 –

+0

我爲此苦苦掙扎了好幾個小時!謝謝! – gr3g

1

我上MAC OS(內華達)和方法遇到此問題來解決它是通過以下步驟,對終端:

launchctl limit maxfiles

它可能顯示256爲下限。以下命令將更改限制。

sudo launchctl limit maxfiles 2048 unlimited

接下來,你還想要卸載反應母語並重新安裝,所以你得到與塞拉利昂效果更好版本。您還想更新Homebrew並安裝當前版本的守望者。

npm uninstall -g react-native-cli npm install -g react-native-cli brew update brew install watchman

信用:https://github.com/facebook/react-native/issues/10088

+0

這對我有用,謝謝! – Bjarte