React native error: Error: watch EMFILE

React native error: Error: watch EMFILE

我刚刚启动了我的第一个 React 本机应用程序:

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> 

EMFILE 是一个错误,当单个进程打开了太多文件时会发生这种错误。本周我在不同的技术栈上遇到了同样的问题。您可以通过使用 ulimit 命令增加打开文件的限制来避免该错误。

ulimit 4096 # for instance

您或许应该弄清楚为什么打开了这么多文件。也许您的监视任务是监视 node_modules 文件夹或类似文件夹中的文件。

希望对您有所帮助

我 运行 在更新到 macOS Sierra 时遇到了同样的问题,但是,事实证明 watchman 是罪魁祸首。翻阅日志,我偶然发现了很多 odd permission issues.

github/facebook/react-native#9943 所述,重新安装 watchman 可解决问题。

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

我在 MAC OS (Sierra) 上遇到了这个问题,解决方法是在终端上执行以下步骤:

launchctl limit maxfiles

可能会显示256为下限。以下命令将更改限制。

sudo launchctl limit maxfiles 2048 unlimited

接下来您还想卸载 react-native 并重新安装它,这样您就可以获得一个更适合 Sierra 的版本。您还想更新 Homebrew 并安装当前版本的 watchman。

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

运行 rm -rf node_modules && npm install 也许有帮助。