You need to enable JavaScript to run this app. React Native CLI运行iOS应用时出现EISDIR与模块解析失败错误求助
优惠活动
大模型
产品
解决方案
定价
更多

React Native CLI运行iOS应用时出现EISDIR与模块解析失败错误求助

React Native CLI iOS启动两类Metro报错的定向修复方案

这两类报错看似无关联,核心诱因均为Metro打包器的模块路径索引错乱、本地依赖包文件结构与预期编译模板不匹配,并非常规环境配置问题,按以下步骤可直接定位解决:

第一步:解决EISDIR: illegal operation on a directory 读取报错

  • 先运行定位命令,直接找到Metro错误读取的冲突路径,避免盲目全量重装:
    node -e "const fs=require('fs'); try {fs.readFileSync('./node_modules/react-native/Libraries/Utilities/debugger-ui', 'utf8')} catch(e) {console.log('冲突路径:', e.path, e.code)}"
    
  • 上述命令输出的路径,基本都是依赖安装过程中因缓存写入异常生成的空目录,和实际需要读取的文件重名冲突。直接删除该冲突目录即可:
    # 替换为命令输出的实际冲突路径
    rm -rf ./node_modules/react-native/Libraries/Utilities/debugger-ui
    
  • 单独强制重装react-native核心包,无需全量重装所有依赖:
    npm install react-native --force
    # 若团队使用yarn,替换为:yarn install react-native --force
    

第二步:解决debuggerWorker.aca173c4 模块找不到报错

  • 先清空系统全局的Metro临时缓存,而非仅清理项目内缓存:
    watchman watch-del-all
    rm -rf /tmp/metro-*
    rm -rf $TMPDIR/react-*
    
  • 清除本地残留的多版本Node兼容的旧依赖文件:
    rm -rf node_modules package-lock.json yarn.lock
    
  • 严格按照团队统一的锁文件版本重装依赖,禁止随意切换npm源或调整安装参数:
    # npm 环境用,严格按lock文件安装无版本漂移
    npm ci
    # yarn 环境用
    yarn install --frozen-lockfile
    
  • 重新安装iOS端pod依赖,避免旧缓存导致的文件缺失:
    cd ios && pod install --repo-update
    

容易遗漏的特殊排查点

  • 检查本地是否存在未提交的metro.config.js临时修改:运行git status查看文件改动,若有非团队主分支提交的配置变更(比如本地调试时加的额外路径、端口配置),直接切回主分支的配置版本即可
  • 检查项目存储路径是否位于iCloud同步目录下:iCloud会自动将node_modules内的文件生成云占位符,导致Metro读取时出现路径不存在、目录/文件类型不匹配的随机报错,将项目移动到非同步的本地磁盘目录下即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 19:06:05