Error: EMFILE: too many open files - React Native CLI

Error: EMFILE: too many open files - React Native CLI

我尝试 运行 使用 react-native start 的 react-native-cli 项目,但 metro bundler 失败,提示如下:

events.js 187
throw er; //Unhandled 'error' event

Error: EMFILE: too many open files, watch

Emitted 'error' event on NodeWatcher isntance at:
     at NodeWatcher: checkedEmitError (.../react-native-project/node_modules/sane/src/node_watcher.js:143:12)
     at FSWatcher.emit (events.js:210:5)
     at FSEvent.FSWatcher:_handle onchange (internal/fs/watchers.js:129:12) {
   errno: -24,
   syscall: 'watch',
   code : 'EMFILE',
   filename: null
)
Process terminated. Press <enter> to close the window

只需关闭所有其他文件,然后重试。如果您 运行 正在 android 上,请确保 运行 cd android./gradlew cleanreact-native run-android 之前。 如果这不能解决问题,则您的文件监视服务可能有问题。试试这个

$ brew update
$ brew install watchman

就我而言,升级 watchman 没有帮助。

更新 Node.js 后开始出现此问题。

感谢 nvm,我回到了节点 v8.11.3(我更新到 v12.0.4),这个问题消失了。

这可能会对遇到同样问题的一些人有所帮助...

我正在使用 Mac 并遇到 EMFile 错误。当我安装文件观察器时解决了

brew install watchman

我正在使用 MAC 和 Node v12.13.1。我升级了守望者,问题得到解决。

watchman 4.9.0_2 -> 4.9.0_4

在安装 PHP Storm 后,我遇到了很多这样的错误以及其他错误,例如找不到“Podfile.lock”等。

我根据 Whosebug 搜索的组合执行了以下操作来更正错误:

  1. 下载、安装并同意 XCode 许可
  2. 通过终端 window 在 brew.sh
  3. 安装 brew
  4. 安装节点
  5. 按照 iOS 终端 window 在 PHPStorm
  6. 中的说明进行操作

正在工作!

以下步骤对我在 MacOS 上有效:

  1. Updateing/Installing 来自官方网站的自制软件 https://brew.sh/
  2. 正在安装守望者:b重新安装守望者

升级我的节点版本后我遇到了这个问题。就我而言,降级不是一个选项。

brew install watchman 没有解决问题,因为我的机器上已经安装了 watchman。 brew upgrade watchman 对我有用。

在我的例子中,我在将开发机器从 Linux 切换到 OS X 后遇到了这个错误。上面的 None 对我有用,直到我 运行 brew upgrade watchman.

TLTR:brew install watchman 在 Mac 一本书上解决了它。

我刚拿到一本新的 Mac 书,并且在 React Native 项目中遇到了同样的问题。在 Windows 上,该项目运行良好,但在 Mac 上,在使用 npm start 运行 几秒钟后,项目崩溃并出现此错误:

Error: EMFILE: too many open files, watch
    at FSEvent.FSWatcher._handle.onchange (internal/fs/watchers.js:178:28)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ start: `expo start`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @ start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

PS:npm install 无效。它必须与 brew install.

对我来说,简单的 upgrade watchman 没有帮助,更改我的 Node 版本也没有帮助。

我在 M1 Mac 上使用 XCode 12.5 构建并且必须:

  • 使用 x86_64 自制程序实例安装 watchman
  • 运行 Rosetta 终端中的 metro 服务器
  • 运行 XCode 没有 Rosetta

如果这是您第一次使用 x86_64 自制程序实例安装包,请记住将其添加到您的路径中。

对于我的情况,我认为这个错误是由于节点升级造成的。

删除 node_modules 文件夹,运行 npm install 解决了问题。

我需要安装 watchmanbrew 就像其他人在这里所做的那样,但是我还需要用这一行更新 React Native Xcode build scriptexport PATH=/opt/homebrew/bin:$PATH 所以 xCode 可以在我的 M1 MacBook Pro 中找到 watchman

React Native Xcode 构建脚本位置:./node_modules/react-native/scripts/react-native-xcode.sh

我通过 macports 安装了 watchman。然而,对于“捆绑 React Native 代码和图像”构建阶段,watchman 的路径是未知的。 添加

export PATH=/opt/local/bin:$PATH

脚本开头为我解决了这个问题

尝试“brew install watchman”命令,

如果“brew”未安装,请按照以下步骤操作

关注this steps,这对我有用。

无论我做什么,我都无法让它工作。 最终对我有用的是使用以下命令

$ sudo sysctl -w kern.maxfiles=10485760
$ sudo sysctl -w kern.maxfilesperproc=1048576

发现于:https://facebook.github.io/watchman/docs/install.html#mac-os-file-descriptor-limits

我有一个 M1 Pro。 希望这对某人有帮助。

尝试了几个节点版本,但给出了同样的错误。

brew update watchman

帮助消除了这个错误。

在我的例子中,icu4c 版本是错误的。我重新安装 icu4c 然后就可以了。这是我使用的命令:

 brew reinstall icu4c

在 docker 内部工作:ulimit -n 2048