我不知道为什么我得到这个错误,我在任何地方都找不到答案。我已经卸载了react-router-dom包并重新安装了它,但它仍然告诉我交换模块没有从react-router-dom导出。这是我的代码。

我得到的错误是:

试图导入错误:“Switch”没有从“react-router-dom”中导出。

Code

import React from 'react';
import './App.css';
import NavBar from './components/navbar.js';
import Footer from './components/footer.js';
import Home from './components/pages/homepage/home.js';
import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom';

function App() {
  return (
    <Router>
      <div className="app-container">
        <NavBar />
        <Switch>
          <Route path="/home" component={Home} />
        </Switch>
        <Footer />
      </div>
    </Router>
  );
}

export default App;

当前回答

我也遇到了同样的问题,我在网上搜索了很多,但是我没有根据我的问题得到任何答案。

所以我卸载了react-router-dom的6版:

npm uninstall react-router-dom

并安装了react-router-dom 5.2.0版本:

npm install react-router-dom@5.2.0

其他回答

在安装react-router-dom v6.0.2后,我得到了这个错误。

用路由替换交换机解决了这个问题:

import {BrowserRouter as Router, Route, Routes} from "react-router-dom";

你必须先检查npm包的版本。 执行npm info react-router-dom version命令查看。

如果包版本为>= 6.0.0,则必须进行更改

import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom";

to

import { BrowserRouter as Router,Routes, Route, Link } from "react-router-dom";

也必须改变

<Route path="/home" component={Home} />

to

<Route path="/home" element={<Home/>} />

写入<路由>而不是<交换机>。

在终端中运行:

npm install --save react-router react-router-dom

这对我很有帮助。或检查文件包。在“react-dom”后面添加以下内容:“^17.0.2”,

 "react-router": "^6.0.0",

你只需要做两件事:

将Switch替换为路由。 使用这个Route标签

<Route path="/" element={<Component />} />

而不是这个:

<Route>
  path="/"
  <Component />
</Route>

如果你正在使用react-router-dom v6,看起来Switch已经被Routes取代了。