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
相关产品推荐
相关产品推荐

