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

Expo Android项目运行报EISDIR: illegal operation on a directory, read错误如何解决

完整错误栈信息:

Error: EISDIR: illegal operation on a directory, read
    at Object.readSync (fs.js:592:3)
    at tryReadSync (fs.js:366:20)
    at Object.readFileSync (fs.js:403:19)
    at UnableToResolveError.buildCodeFrameMessage (C:\Users\thanu\Downloads\sociallydarkmodeandfollowshare\socially2\node_modules\metro\src\node-haste\DependencyGraph\ModuleResolution.js:304:17)
    at new UnableToResolveError (C:\Users\thanu\Downloads\sociallydarkmodeandfollowshare\socially2\node_modules\metro\src\node-haste\DependencyGraph\ModuleResolution.js:290:35)
    at ModuleResolver.resolveDependency (C:\Users\thanu\Downloads\sociallydarkmodeandfollowshare\socially2\node_modules\metro\src\node-haste\DependencyGraph\ModuleResolution.js:168:15)
    at DependencyGraph.resolveDependency (C:\Users\thanu\Downloads\sociallydarkmodeandfollowshare\socially2\node_modules\metro\src\node-haste\DependencyGraph.js:353:43)
    at C:\Users\thanu\Downloads\sociallydarkmodeandfollowshare\socially2\node_modules\metro\src\lib\transformHelpers.js:271:42
    at C:\Users\thanu\Downloads\sociallydarkmodeandfollowshare\socially2\node_modules\metro\src\Server.js:1097:37
    at Generator.next ()
触发原因

该错误本质是Node.js的fs模块尝试将目录作为普通文件读取触发的系统级错误,结合栈中的Metro打包器日志,可定位是Expo的模块解析阶段出错,常见触发场景如下:

  • 导入语句路径错误:import/require语句传入的路径指向目录而非文件,且对应目录下没有默认入口文件(如index.js/index.ts),也没有在目录下的package.json中指定main字段作为入口
  • 项目缓存损坏:Metro打包缓存、Expo本地缓存或依赖缓存存在异常
  • 依赖损坏:node_modules安装不完整,尤其是metro相关依赖存在文件缺失
  • 静态资源引入错误:引入图片、字体等静态资源时,路径指向资源所在目录而非具体的资源文件
  • 打包配置错误:自定义的metro.config.js或Babel别名配置存在错误,导致模块解析指向了目录
修复方案

按优先级依次尝试以下操作:

  1. 排查所有导入语句
  • 全局搜索近期改动过的import/require语句,确认路径指向的是有效文件
  • 若确实需要直接导入目录,需保证目录下存在对应后缀的index入口文件,或在目录的package.json中配置main字段指向入口
  • 检查所有静态资源引入路径,确认指向具体文件而非目录
  1. 清理缓存并重装依赖
    依次执行以下命令(Windows系统可手动删除对应文件夹和文件替换rm命令):
# 停止所有Expo相关进程后执行
rm -rf node_modules package-lock.json yarn.lock
npm install
npx expo start --clear
  1. 检查自定义打包配置
  • 若项目有自定义metro.config.js,确认resolver.extensions配置包含项目用到的所有文件后缀(js、jsx、ts、tsx等)
  • 确认Babel模块别名配置没有指向不存在的文件或目录
  • 确认resolver.assetExts配置没有错误包含目录相关后缀
  1. 对比代码版本
    上述方案无效时,回滚到上一个可正常运行的代码版本,对比差异定位出错的代码或配置改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:36:03