EMFile:打开的文件太多,观看 - 构建 Release 反应原生 iOS 应用程序
Posted
技术标签:
【中文标题】EMFile:打开的文件太多,观看 - 构建 Release 反应原生 iOS 应用程序【英文标题】:EMFile: too many open files, watch - building Release react native iOS app 【发布时间】:2022-01-03 02:23:26 【问题描述】:我使用 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
我看到其他几个人有类似的错误,并尝试了以下步骤但没有运气:
尝试了不同版本的节点 更新的守望者 重新安装自制软件 关闭除 Xcode 之外的所有窗口/应用程序我感觉这个错误与 M1 芯片有关,但我真的很难找到解决方案,因此不胜感激。
设备 - Mac mini(M1,2020),运行 macOS Monterey 12.0.1
节点版本 - 17.0.1
React Native 版本 - ~0.63.4
我用this文章搭建环境
如果您需要更多信息/sn-ps,请告诉我
【问题讨论】:
【参考方案1】:今年早些时候我遇到了同样的问题。确实是因为在没有 Rosetta 的情况下安装 watchman 时 M1 芯片和 XCode 构建不正确。
我正在使用 XCode 12.5 在 M1 Mac 上进行构建,并且必须:
使用 x86_64 自制程序实例安装 watchman 在 Rosetta 终端中运行 Metro 服务器 不使用 Rosetta运行 XCode如果这是您第一次使用 x86_64 自制程序实例安装软件包,请记住将其添加到您的 PATH。
【讨论】:
谢谢,试试这个。 x86_64 自制软件是 M1 吗?如果没有,您是否有任何关于如何安装它的链接。然后当您说运行 Metro 服务器时,您的意思是指在构建应用程序时在终端中的npm start
吗?
自制程序的 x86_64 实例是使用 Rosetta 终端安装的(不是 M1 mac 使用的默认 ARM 终端)。是的,它在终端中是一个简单的npm start
,但在 xcode 中构建应用程序之前运行它。以上是关于EMFile:打开的文件太多,观看 - 构建 Release 反应原生 iOS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
React Native + Jest EMFILE:打开文件过多错误