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

React项目使用react-router-dom遇Switch导出未找到报错求助

解决react-router-dom中Switch导出不存在的问题

问题根源

你遇到的错误是因为react-router-dom v6 彻底移除了Switch组件,取而代之的是Routes组件,同时组件的用法也有调整。从报错信息里的possible exports列表也能看到,只有Routes而没有Switch。

解决方案

方案1:升级代码适配v6(推荐)

将代码中的Switch替换为Routes,同时调整Route的写法:

  • 移除component/render属性,改用element属性传入JSX元素
  • Routes内部的Route默认精确匹配路径,无需额外配置exact

示例代码修改:

// 旧写法(v5及以下)
import { Switch, Route } from 'react-router-dom';

function App() {
  return (
    <Switch>
      <Route path="/" exact component={Home} />
      <Route path="/profile" render={() => <Profile />} />
    </Switch>
  );
}

// 新写法(v6)
import { Routes, Route } from 'react-router-dom';

function App() {
  return (
    <Routes>
      <Route path="/" element={<Home />} />
      <Route path="/profile" element={<Profile />} />
    </Routes>
  );
}

方案2:降级到react-router-dom v5(不推荐)

如果你暂时不想修改代码,可以回退到支持Switch的v5版本:

# npm
npm install react-router-dom@5

# yarn
yarn add react-router-dom@5

额外注意

v6还有其他API变化,比如useHistory替换为useNavigate,嵌套路由需要用Outlet组件等,建议优先适配v6以获得更好的性能和新特性。

内容的提问来源于stack exchange,提问作者Ahad Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:45:20