EMFile:打开的文件太多,观看 - 构建发布反应本机 iOS 应用程序

Tom*_*Tom 6 xcode ios react-native apple-m1

我使用 Expo 编写了 React Native 应用程序,然后使用expo eject. 我现在正在尝试构建该应用程序的发行版本。它适用于 Android,也适用于 iOS 的调试构建,但当我尝试在 Xcode 上构建发布时,出现以下错误:

Error: EMFILE: too many open files, watch
    at FSEvent.FSWatcher._handle.onchange (internal/fs/watchers.js:178:28)
Emitted 'error' event on NodeWatcher instance at:
    at NodeWatcher.checkedEmitError (/node_modules/sane/src/node_watcher.js:143:12)
    at FSWatcher.emit (events.js:400:28)
    at FSEvent.FSWatcher._handle.onchange (internal/fs/watchers.js:184:12) {
  errno: -24,
  syscall: 'watch',
  code: 'EMFILE',
  filename: null
}
Run Code Online (Sandbox Code Playgroud)

我看到其他一些人也有类似的错误,并尝试了以下步骤,但没有成功:

  • 尝试了不同版本的节点
  • 更新了守望者
  • 重新安装了自制程序
  • 关闭除 Xcode 之外的所有窗口/应用程序

我感觉这个错误与 M1 芯片有关,但我真的很难找到解决方案,因此非常感谢您的帮助。


设备- Mac mini(M1,2020),运行 macOS Monterey 12.0.1

节点版本- 17.0.1

React Native 版本- ~0.63.4

我用这篇文章来搭建环境

如果您需要更多信息/片段,请告诉我

小智 0

我今年早些时候也遇到过同样的问题。确实是因为在没有Rosetta的情况下安装watchman时M1芯片和XCode无法正确构建。

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

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

如果这是您第一次使用 homebrew 的 x86_64 实例安装软件包,请记住将其添加到您的 PATH 中。