React Native Expo项目重载时显示‘Screen Doesn't Exist’求助
Expo Router 重载模拟器后跳转至“此页面不存在”问题排查与修复
在Android模拟器上开发基于Expo Router文件路由的React Native Expo项目时,新增路由后首次运行正常,但重载模拟器时,应用会跳转到“This screen doesn't exist.”(此页面不存在)页面。当前路由结构如下:
app ├── (tabs) │ ├── profile │ │ ├── index.tsx │ │ └── _layout.tsx │ ├── two.tsx │ └── _layout.tsx ├── +html.tsx ├── +not-found.tsx ├── modal.tsx └── _layout.tsx
已尝试删除(tabs)/_layout.tsx中的所有路由配置、删除旧路由对应文件、重新创建项目等操作,但问题仍未解决。
可能的修复方案
1. 清除缓存并重启开发服务
终止当前Expo开发服务器,清除Metro缓存后重新启动:
npx expo start --clear
同时在Android模拟器中执行清除应用缓存/数据操作,再重新加载应用。
2. 校验(tabs)/_layout.tsx的路由配置
确保Tabs组件的screen名称与文件系统中的路由完全匹配(Android文件系统区分大小写),避免硬编码错误。示例正确配置:
import { Tabs } from 'expo-router'; export default function TabLayout() { return ( <Tabs> <Tabs.Screen name="profile" /> <Tabs.Screen name="two" /> </Tabs> ); }
3. 检查profile/_layout.tsx的布局配置
profile文件夹下的_layout.tsx仅需作为布局容器,无需额外路由定义,示例正确写法:
import { Stack } from 'expo-router'; export default function ProfileLayout() { return <Stack />; }
4. 确保Expo与Expo Router版本兼容
检查项目依赖中expo和expo-router的版本是否匹配,建议更新至最新稳定版:
npx expo install expo-router@latest expo@latest
5. 验证根_layout.tsx的初始路由设置
确认根布局中初始路由指向正确,避免重载时导航到无效路径:
import { Stack } from 'expo-router'; export default function RootLayout() { return <Stack initialRouteName="(tabs)" />; }
内容的提问来源于stack exchange,提问作者Chase Hutcheson
相关产品推荐
相关产品推荐

