【问题标题】:EMFile: too many open files, watch - building Release react native iOS appEMFile:打开的文件太多,观看 - 构建 Release 反应原生 iOS 应用程序
【发布时间】: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,请告诉我

【问题讨论】:

    标签: ios xcode react-native apple-m1


    【解决方案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 中构建应用程序之前运行它。
    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2019-11-30
    相关资源
    最近更新 更多