React Native:XCode:构建失败,出现错误 "EMFILE: too many open files, watch"

React Native: XCode: Build failed with error "EMFILE: too many open files, watch"

– MacBook Air M1 – macOS 11.3 – XCode 12.5 – 反应本机 0.64.1 – 节点 16.0.0 – npm 7.15.1 – 守望者 2021.05.31.00

当我尝试存档项目或为设备构建项目时,Xcode 停止构建并出现错误:

/Users/aptyp/Projects/Proffmylife/Client/node_modules/metro-hermes-compiler/src/emhermesc.js:81
          throw ex;
          ^

Error: EMFILE: too many open files, watch
    at FSEvent.FSWatcher._handle.onchange (node:internal/fs/watchers:204:21)
Emitted 'error' event on NodeWatcher instance at:
    at NodeWatcher.checkedEmitError (/Users/aptyp/Projects/Proffmylife/Client/node_modules/sane/src/node_watcher.js:143:12)
    at FSWatcher.emit (node:events:365:28)
    at FSEvent.FSWatcher._handle.onchange (node:internal/fs/watchers:210:12) {
  errno: -24,
  syscall: 'watch',
  code: 'EMFILE',
  filename: null
}
Command PhaseScriptExecution failed with a nonzero exit code

但对于模拟器,构建工作正常。

我试过重装node_modules,Pods,watchmanbrew。我还创建了文件 limit.maxfiles.plist, limit.maxproc.plist 到目录 /Library/LaunchDaemons/ 现在 ulimit -a 显示 进程 2000 文件描述符 524288。重新启动计算机并解锁钥匙串。

在装有 Hackintosh 的 PC 上我没有这个问题。

我创建了一个同名的新项目,安装了所有最新的包并复制了代码。之后项目才搭建成功。

此错误是由于 mac m1 芯片的模块 fsevents 中的错误。查看主题:https://github.com/facebook/metro/issues/668

它已通过新版本的守望者修复。通过 brew 升级你的守望者。删除您的项目并从 git 下载并重建所有内容以及 pod 安装,然后它应该没问题。

Facebook guy admitting to the bug and fixing it