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

如何通过tsr.config.json配置TanStack Router文件路由,避免组件文件误识别

问题:TanStack Router文件路由如何排除组件文件

我正从React Router切换到TanStack Router,想实现文件路由,采用的文件夹结构如下:

src/
  main.ts
  pages/
    __root.tsx
    home/
      index.ts
      Home.tsx
      Home.styled.ts

已将路由目录重命名为pages,并修改配置生效:

"routesDirectory": "./src/pages"

每个页面目录下的index.ts用来注册路由,代码如下:

import { createFileRoute } from '@tanstack/react-router'
import { Home } from './Home.tsx'

export const Route = createFileRoute('/home/')({
  component: Home,
})

export default Home

现在遇到错误:

Uncaught SyntaxError: The requested module '.../src/pages/home/Home.tsx' doesn't provide an export named: 'Route'

我不想让Home.tsx这类页面组件文件被路由识别,路由注册逻辑已经放在index.ts里了。目前临时方案是给组件文件加前缀改成-Home.tsx让它被忽略,但我不满意这个方法,想知道能不能通过tsr.config.json来配置实现?


解决方案

可以通过tsr.config.json的exclude选项精准控制哪些文件会被TanStack Router的文件路由系统忽略,不需要给组件文件加特殊前缀。

通用配置方案

在项目根目录的tsr.config.json中添加如下配置:

{
  "routesDirectory": "./src/pages",
  "exclude": [
    "**/*.tsx",
    "!**/__root.tsx",
    "!**/index.ts"
  ]
}

配置说明:

  • **/*.tsx:先匹配所有.tsx文件,将它们排除在路由识别范围外
  • !**/__root.tsx:重新将根路由文件__root.tsx纳入识别范围
  • !**/index.ts:重新将所有目录下用来注册路由的index.ts纳入识别范围

这样配置后,TanStack Router只会处理__root.tsx和各页面目录下的index.ts,其他.tsx组件文件(比如Home.tsx)会被自动忽略,完全符合需求。

更精准的匹配方案(可选)

如果你的组件文件命名有规律(比如都是以大写字母开头的[ComponentName].tsx),也可以用更精准的规则:

{
  "routesDirectory": "./src/pages",
  "exclude": [
    "**/[A-Z]*.tsx",
    "!**/__root.tsx"
  ]
}

这个规则会排除所有以大写字母开头的.tsx文件,同时保留根路由文件。

内容的提问来源于stack exchange,提问作者Type-Style

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:35:05