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

Expo手机端运行安卓App时出现ENOENT文件不存在错误咨询

Expo运行至手机端ENOENT报错(非控制台打印响应类)诱因排查

报错核心特征为Metro尝试读取的路径错误拼接了HTTP服务地址,将网络bundle路径识别为本地文件路径,具体报错信息如下:

Error: ENOENT: no such file or directory, open '/home/ira/dev/eshka/http:/192.168.0.104:19000/node_modules/expo/AppEntry.bundle?platform=android&dev=true&hot=false&strict=false&minify=false'
    at Object.openSync (node:fs:585:3)
    at Object.readFileSync (node:fs:453:35)
    at getCodeFrame (/home/ira/dev/eshka/node_modules/metro/src/Server.js:949:18)
    at Server._symbolicate (/home/ira/dev/eshka/node_modules/metro/src/Server.js:1022:22)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at Server._processRequest (/home/ira/dev/eshka/node_modules/metro/src/Server.js:429:7) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/ira/dev/eshka/http:/192.168.0.104:19000/node_modules/expo/AppEntry.bundle?platform=android&dev=true&hot=false&strict=false&minify=false'
}

排除代码中控制台打印原始响应的场景后,可按以下优先级排查诱因:

  • Metro缓存损坏
    这是该类路径拼接错误最高发的诱因,旧缓存中留存的错误路径映射会导致Metro处理符号化请求时逻辑错乱。直接执行带清缓存参数的启动命令即可:
    npx expo start -c
    等待Metro全量重新构建缓存后,再重新连接手机测试。
  • 主机地址识别异常
    当设备存在多网卡(同时连接VPN、虚拟机虚拟网卡、有线+无线双网络)时,Metro自动识别的局域网IP可能和手机实际访问的服务IP不匹配,导致请求路径解析错位。
    排查时先关闭电脑、手机端所有VPN、代理软件,确认两台设备在同一WiFi网段下可互相ping通;启动Expo时手动指定绑定的同网段IP即可,命令参考:
    EXPO_DEV_SERVER_HOST=你的电脑局域网IP npx expo start
  • Metro配置或版本不兼容
    如果近期升级过Expo SDK、单独调整过metro依赖版本,或者自定义过metro.config.js中的解析规则,可能触发Metro路径解析的已知bug。
    先将metro.config.js临时恢复为Expo默认配置测试,再核对所有metro相关依赖版本和当前使用的Expo SDK版本要求完全匹配,不要单独升级metro到跨版本的非兼容版本。
  • 动态模块引用错误
    排查代码中所有动态require()、动态import()的传参,确认没有误将HTTP网络地址作为本地模块路径传入,也没有在拼接本地资源路径时混入HTTP前缀,这类非法路径会被Metro直接拼接到项目根目录下触发读文件错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:21:07