You need to enable JavaScript to run this app. Expo CLI开发React Native执行npm start报ENOENT: 无fs.js文件错误求助
优惠活动
大模型
产品
解决方案
定价
更多

Expo CLI开发React Native执行npm start报ENOENT: 无fs.js文件错误求助

Expo启动报ENOENT: no such file or directory, open 'fs.js'问题排查与解决

核心诱因定位

从你提供的环境信息和堆栈报错来看,问题并非出在你编写的业务代码,而是环境兼容性、依赖损坏两类问题共同触发的Metro Bundler模块解析异常:Metro在Server.js初始化阶段错误解析Node内置fs模块的引用路径,试图从项目相对路径下读取不存在的fs.js文件,最终抛出文件不存在的错误。

分步排查与解决操作

1. 升级兼容版本的Node环境(优先级最高)

当前环境使用的Node 10.19.0 远低于Expo SDK40、对应Metro版本的最低运行要求:

  • Expo SDK40官方要求Node版本不低于12.x,10.x版本的Node模块解析逻辑与新版本Metro存在天然兼容性冲突,是触发该类路径解析错误的最常见原因
  • 操作流程:
    • 卸载Linux Mint系统源自带的旧版Node:执行sudo apt remove nodejs npm
    • 安装14.x版本的Node LTS(与SDK40匹配度最高,无额外兼容问题)
    • 安装完成后执行node -v,确认输出版本为v12.x及以上即可

2. 清理损坏的本地依赖与Metro缓存

依赖安装不完整、Metro缓存文件损坏同样会导致模块路径解析错乱,按顺序执行清理操作:

  • 进入项目根目录,删除node_modules文件夹、package-lock.json文件
  • 执行npm cache clean --force清空npm本地缓存
  • 重新安装项目依赖:执行npm install
  • 启动时强制清空Metro缓存:执行expo start -c,避免直接使用原有缓存启动

3. 修复全局Expo CLI的版本适配问题

你当前全局安装的Expo CLI 4.3.0属于4.x分支的早期版本,存在已知的Metro配置路径解析bug:

  • 执行npm uninstall -g expo-cli卸载旧版本全局CLI
  • 重新安装4.x分支的稳定版本:执行npm install -g expo-cli@4.13.0,该版本是最后一批支持SDK40的稳定CLI版本,无已知的路径解析问题
  • 安装完成后执行expo diagnostics校验环境信息,确认Node、CLI版本匹配后再启动项目

4. 兜底排查项目异常文件

执行完上述步骤后如果仍报错,检查项目根目录下是否存在编辑器误生成的fs.js同名文件:由于Metro的模块解析优先级是项目本地文件高于Node内置模块,若存在空的同名文件,会触发读取失败的ENOENT错误,直接删除该文件即可恢复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 13:15:04