React Native中Metro构建器未识别index.js导致组件导入报错
问题定位
你当前的组件导出写法是完全符合React Native模块规则的,不需要修改导出逻辑
Metro 抛出的 ENOENT 错误本质是路径解析不匹配:导入语句指向的路径,被Metro识别为要加载 screens/Home.js 文件,而非读取 screens/Home 文件夹内的入口文件。
常见触发场景包括相对路径层级错误、Metro缓存残留未识别新建目录。
修复步骤
第一步:核对实际目录结构
确认文件存放位置符合预期,避免文件和文件夹命名混淆:目标结构参考:
项目根目录 └── screens └── Home (文件夹,非js文件) ├── Home.js (内部导出Home组件) └── index.js (转发导出组件)同时根据写导入语句的源文件位置,计算准确的相对路径,避免层级写错导致路径错位。
第二步:清除Metro缓存重启服务
这类新建目录后找不到文件的报错,绝大多数是Metro旧缓存残留导致的。执行以下命令重启打包服务:# npm 项目 npx react-native start --reset-cache # yarn 项目 yarn start --reset-cache重启后重新编译项目即可。
第三步:显式路径验证
如果清缓存后仍报错,可以临时把导入语句改成全路径,绕开默认的index.js目录解析规则验证:
原导入:import Home from '../../screens/Home';临时修改为:
import Home from '../../screens/Home/index.js';若修改后能正常运行,说明是目录解析的配置或缓存问题,清缓存后即可改回原导入写法。
内容的提问来源于stack exchange,提问作者Vladimir Melkumyan
相关产品推荐
相关产品推荐

