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

切换Node版本后React Native打包报EMFILE文件打开过多错误求助

React Native Android打包EMFILE错误解决方案

问题背景

原本使用Node.js v18.17.0运行React Native应用,切换到Node.js v16后切回v18.17.0,删除node_modules并重新执行npm i后,Android打包仍失败,抛出EMFILE: too many open files错误,报错位置在metro-cache/src/Cache.js。

解决步骤

  • 清理Metro缓存与临时文件

    • 执行Metro缓存清理命令:npx metro-cache clean
    • 手动删除报错路径中的metro-cache文件夹(即C:\placeholder\placeholder\placeholder\Local\Temp\metro-cache)
    • 清理Android构建缓存:cd android && ./gradlew clean && cd ..
  • 调整Windows系统文件句柄限制

    • 关闭所有不必要的后台程序,减少文件占用
    • 以管理员身份打开命令提示符,执行fsutil file setmaxfiles 10000(可根据实际情况调整数值)
  • 重置项目依赖状态

    • 删除锁文件:del package-lock.json(npm用户)或del yarn.lock(yarn用户)
    • 删除node_modules文件夹:rmdir /s /q node_modules
    • 重新安装依赖:npm install
    • 结束所有Node.js进程(打开任务管理器,终止node.exe相关进程),再重新执行打包命令
  • 临时调整Metro缓存配置(测试用)

    • 修改项目根目录的metro.config.js,临时禁用缓存:
      module.exports = {
        // 保留原有其他配置
        cacheStores: [],
      };
      
    • 打包成功后,恢复原有缓存配置,或更换缓存目录到权限正常、空间充足的路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:45:01