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

React Router中Route无法作为JSX组件的MERN(TypeScript)应用问题

解决“Route cannot be used as a JSX component”错误

1. 修正Route组件的属性写法(react-router-dom v6)

你代码里用的Component大写属性是react-router-dom v5的写法,v6版本中Route组件需要用小写的element属性,且传入的是JSX元素(而非组件引用)。修正后的代码如下:

import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import HomePage from './pages/HomePage';
import StartGame from './pages/StartGame';

function App() {
  return (
    <>
      <Router>
        <Routes>
          <Route path="/" element={<HomePage />} />
          <Route path="/start" element={<StartGame />} />
        </Routes>
      </Router>
    </>
  );
}
export default App;

2. 确认react-router-dom版本匹配

  • 若坚持使用v5版本,需用Switch代替Routes,同时保留component(小写)属性,注意v5的Switch需从react-router-dom导入:
// react-router-dom v5写法
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';

function App() {
  return (
    <>
      <Router>
        <Switch>
          <Route path="/" component={HomePage} />
          <Route path="/start" component={StartGame} />
        </Switch>
      </Router>
    </>
  );
}
  • 建议统一使用最新v6版本,执行以下命令确保依赖安装正确:
npm install react-router-dom@latest
npm install @types/react-router-dom@latest --save-dev

3. 排查TypeScript类型冲突

  • 检查是否同时安装了react-router和react-router-dom,若有则卸载其中一个(只需保留react-router-dom):
npm uninstall react-router
  • 确保@types/react、@types/react-dom版本与react、react-dom版本一致,避免类型不兼容:
npm install @types/react@latest @types/react-dom@latest --save-dev

4. 清除缓存并重启项目

缓存可能导致类型解析异常,执行以下命令清除缓存后重启项目:

rm -rf node_modules .next dist # 替换为你的项目构建目录
npm install
npm run dev

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 10:35:21