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

如何修复React Native启动时Too many open files报错

EMFILE: too many open files 报错修复方案

已安装watchman但问题仍存在时,按以下顺序操作:

  • 校验watchman运行权限
    终端执行watchman version,如果返回权限类报错,打开「系统偏好设置>安全性与隐私>隐私>完全磁盘访问权限」,为当前使用的终端程序(Terminal.app/iTerm2等)勾选授权,重启终端后重试。
  • 调高系统文件打开句柄上限
    macOS Catalina默认文件句柄上限偏低,项目依赖较多时即使加载watchman也会触发句柄耗尽:
    1. 临时生效方案(仅当前终端会话有效):执行ulimit -n 65536后直接启动项目
    2. 永久生效方案:
      新建或编辑/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>524288</string>
          </array>
          <key>RunAtLoad</key>
          <true/>
          <key>ServiceIPC</key>
          <false/>
        </dict>
      </plist>
      
      执行以下命令加载配置,重启电脑后生效:
      sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
      sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
      
      重启后执行ulimit -n,返回值为65536即配置生效。
  • 清理损坏的监听缓存
    依次执行以下命令清空watchman历史监听记录和项目临时缓存:
    watchman watch-del-all
    watchman shutdown-server
    rm -rf node_modules/.cache .expo
    yarn start --clear
    
  • 排查目录同步冲突
    若项目存放在iCloud云盘、第三方同步网盘目录下,同步程序会占用大量文件监听句柄,将项目移动到本地非同步目录(如~/Development路径)后再启动。
  • 修复Node版本兼容问题
    当前使用的Node 16.14.2存在fs.watch模块已知bug,切换到16.18.0及以上的16.x LTS版本即可(避开Node 17版本,符合Expo兼容要求)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:00:59