You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1芯片Mac构建React Native iOS Release包出现EMFILE: too many open files错误

解决方案

1. 永久修改 macOS 最大文件打开限制

M1 芯片的 Mac 默认文件打开数上限远低于 Release 构建所需的监听量级,仅临时关闭应用无法从根本上解决问题,可通过修改系统配置永久上调上限:

  • 打开终端执行命令创建/编辑配置文件:
sudo nano /Library/LaunchDaemons/limit.maxfiles.plist
  • 将以下内容完整粘贴到文件中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>limit.maxfiles</string>
    <key>ProgramArguments</key>
    <array>
      <string>launchctl</string>
      <string>limit</string>
      <string>maxfiles</string>
      <string>65536</string>
      <string>200000</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceIPC</key>
    <false/>
  </dict>
</plist>
  • 按下 Control+O 保存文件,再按 Control+X 退出 nano 编辑器,依次执行以下命令加载配置:
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
  • 重启电脑后配置生效,重启后可在终端执行 ulimit -n 验证,正常输出结果为 65536。

2. 适配 React Native 0.63 的 M1 构建兼容

你使用的 React Native 0.63 版本发布早于 M1 芯片上市时间,本身存在 ARM 架构构建的兼容问题,可调整 Xcode 构建脚本规避:

  • 打开 Xcode 进入项目配置页,选中对应 App 的 target,切换到「Build Phases」标签,找到「Bundle React Native code and images」项,在脚本最上方添加两行配置:
export NODE_OPTIONS=--max-old-space-size=4096
ulimit -n 65536
  • 按下 Command+Shift+K 清理 Xcode 现有构建缓存,删除项目下的 ios/build 文件夹后重新尝试构建 Release 版本。

3. 依赖兼容修复

如果上述方案仍未生效,可将 Node 版本降级到 14.x LTS 版本,React Native 0.63 对 16 以上的 Node 版本兼容性较差。之前切换 Node 版本未生效大概率是未清理旧依赖,降级后需要删除项目根目录的 node_modules 文件夹、yarn.lock 或 package-lock.json 文件,重新执行依赖安装命令后再构建。


内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:45:04