Expo Router无法检测文件系统变更的问题排查求助
Expo Router路由检测异常:仅识别
(main)文件夹变更,其他路由/文件夹被忽略 问题背景
近期开始使用Expo Router开发应用,第一天运行正常,第二天添加登录页并设为默认页面后,遇到了无法解释的路由检测问题,耗时一整天排查文件夹结构和代码均无进展。
当前文件夹结构
src/app - (main)/ - _layout.tsx(使用<Tabs>包含2个Tabs.Screen,对应"page1"和"page2") - page1.tsx - page2.tsx - _layout.tsx(使用<Stack>包含2个Stack.Screen,对应"login"和"(main)") - login.tsx
异常现象与报错
根据Expo Router文档、官方模板及示例代码,上述结构应为有效,但运行应用时收到警告:
No route named "login" exists in nested children: ["(main)", "_sitemap", "[...404]"]
核心异常点:
login路由完全未被系统检测到,未出现在嵌套子路由列表中- 将
login.tsx重命名为index.tsx,仍无法被识别,反而提示"index"路由不存在 - 将
index.tsx移入新建的(auth)文件夹,并将根栈路由的目标改为"(auth)",(auth)依旧未出现在路由列表中 - 测试
(main)文件夹:将其重命名为(ddddd),系统能检测到新的(ddddd)路由,但旧的(main)仍保留在路由列表中,甚至可通过站点地图导航访问
缓存清理操作(均无效)
怀疑是缓存问题,执行了以下操作后问题依旧:
- 删除
node_modules并重新安装依赖 - 清理npm缓存(
npm cache clean --force) - 删除
/tmp目录下所有与Expo、npm、metro相关的临时文件 - 使用
npx expo start --clear启动服务器
操作后仍收到类似警告:
No route named "(auth)" exists in nested children: ["(main)", "_sitemap", "[...404]"]
(注:已将(ddddd)改回(main),系统能识别此变更)
额外测试
- 最初是手动安装Expo Router,后尝试使用官方模板复现问题,结果一致:仅"(tabs)"文件夹的变更能被检测到,其他文件夹/文件均被忽略;且"(tabs)"重命名后,旧名称仍会保留在路由列表中
求助需求
目前倾向于是Expo Router的bug,可能与我的Arch Linux系统配置相关,但在提交官方bug报告前,想确认是否存在遗漏的明显配置错误或操作失误。
内容的提问来源于stack exchange,提问作者Yarm
相关产品推荐
相关产品推荐

