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

使用react-router-dom时出现组件类型无效错误,请求排查解决

React Router DOM 组件类型无效错误排查

我正在codesandbox.io中开发项目,尝试使用react-router-dom,但遇到了如下错误,始终无法找出问题所在。请问我哪里操作有误?

错误信息

Error Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.
Check the render method of <App>.

现有代码

index.js

import React from "react";
import * as ReactDOM from "react-dom";
import { BrowserRouter, Switch, Route } from "react-router-dom";
import Home from "./Home";

export default function App() {
  return (
    <BrowserRouter>
      <Switch>
        <Route path="/">
          <Home />
        </Route>
      </Switch>
    </BrowserRouter>
  );
}

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<App />);

Home.js

import React from "react";

const Home = () => {
  return (
    <div>
      <div>Home</div>
    </div>
  );
};

export default Home;

解决方案

问题出在React Router DOM版本不兼容:当前安装的应该是v6版本,但你写的是v5的语法。v6移除了Switch组件,同时修改了Route的使用方式。

适配v6版本的修改

将Switch替换为Routes,并给Route添加element属性传入组件:

import React from "react";
import * as ReactDOM from "react-dom";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import Home from "./Home";

export default function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<Home />} />
      </Routes>
    </BrowserRouter>
  );
}

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<App />);

若需保留v5语法

如果一定要用Switch,则需要安装v5版本的依赖:

npm install react-router-dom@5

推荐使用最新的v6版本,按上述方式修改代码即可解决错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:03:19