-- Обновление: это начало работать, когда я просто остановил сервер разработки, вышел из VSCode и снова перезапустил его. Не уверен, что вызвало это.
Занят изучением React и столкнулся с этой ошибкой. Я пробовал несколько других сообщений SO, но не могу найти ответ на свою проблему.
Я следую указаниям использовать только react-router-dom и импортировать BrowserRouter и Route из react-router-dom. Но я получаю сообщение об ошибке:
./src/App.js
Attempted import error: 'Route' is not exported from 'react-router-dom'.
Не уверен, что я делаю неправильно здесь?
Вот мой App.js
import React, { Component } from 'react';
import Navbar from './components/Navbar'
import { BrowserRouter, Route } from 'react-router-dom'
import Home from './components/Home'
class App extends Component {
render() {
return (
<BrowserRouter>
<div className = "App">
<Navbar />
<Route path='/' component = {Home} />
</div>
</BrowserRouter>
);
}
}
export default App;
Вот мой package.json:
"name": "poketimes",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.8.5",
"react-dom": "^16.8.5",
"react-router-dom": "^5.0.0",
"react-scripts": "2.1.8"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
}
Из того, что я читал, другие сообщения по-прежнему используют реагирующий маршрутизатор отдельно, но, если я правильно понимаю документацию, я не должен делать этого в этой версии? Кроме того, я следую учебнику, который делает это именно так, и, похоже, он работает.
Любой совет будет принят с благодарностью, спасибо!
Может возникнуть проблема с зависимостями реактивного маршрутизатора 5. reacttraining.com/blog/react-router-v5 А пока понизьте реактивный маршрутизатор до версии 4 и проверьте.
Код работает с react-router-dom v5. codeandbox.io/s/n5r3vz9980. Можете ли вы опубликовать воспроизводимый пример
Посмотрите на эту проблему, возможно, несоответствие между react-router и react-router-dom github.com/ReactTraining/реагировать-маршрутизатор/issues/6639
@TyroHunter, у другого нет реагирующего маршрутизатора в зависимостях
Всем привет. Он только начал работать, когда я остановил сервер разработки, закрыл VSCode, снова открыл его и снова запустил. Ничего не менял в коде. Я использую запуск пряжи вместо запуска npm, если это что-то значит? Спасибо.





import React, { Component } from 'react';
import Navbar from './components/Navbar'
import { BrowserRouter, Route ,Switch} from 'react-router-dom'
import Home from './components/Home'
class App extends Component {
render() {
return (
<BrowserRouter>
<div className = "App">
<Navbar />
<Switch>
<Route exact path='/' component = {Home} />
</Switch>
</div>
</BrowserRouter>
);
}
}
export default App;
попробуй так
Пожалуйста, предоставьте подробное описание, почему автору запроса необходимо импортировать Switch, также сначала оставьте комментарий, а не ответ.
обратитесь к этой ссылке, чтобы понять, зачем обертывать маршрут с помощью коммутатора reacttraining.com/react-router/web/api/Switch
Кажется, ваш маршрут устарел в следующих версиях, поэтому используйте этот импорт:
import {Route} from 'react-router-dom/Route';
Во всяком случае, вы бы импортировали Route, а не {Route}. Импорт {route} по сути является импортом react-router-dom/Route/Route
У меня была такая же проблема. У вас может быть конфликт с NPM и YARN. Я удалил свой yarn.lock и снова запустил его только с package.lock; и это сработало.
Вы должны использовать только Yarn или NPM.
Закройте сервер и перезапустите его. Это работает нормально.
npm start или yarn start
Я тоже застрял на этом... Для меня это сработало, когда версии «реагировать-маршрутизатор» и «реагировать-маршрутизатор-дом» совпадали.
"react-router": "^5.2.0",
"react-router-dom": "^5.2.0",Возможно, это происходит из-за того, что вы его не установили. Вы должны запустить эту команду:
npm i react-router
Пожалуйста, еще раз проверьте написание BrowserRouter или, если написание правильное, перезапустите npm, используя CTRL + C и
npm start
Вы должны добавить эту строку в свои компоненты.
import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom";
Моя проблема решилась этим методом.
проблема решена во мне
npm uninstall react-router
а также
npm uninstall react-router-dom
тогда
npm install react-router react-router-dom
используйте версию 5.0.0
Вам нужно убедиться, что тип возвращаемого значения в классе приложения. Вы возвращаете BrowserRouter. Поэтому, когда вы выполняете импорт, вам нужно убедиться, что вы указали правильное имя класса, который вы импортируете.
BrowserRouter возвращается, а не Router.
Так и должно быть
import { BrowserRouter } from 'react-router-dom'
или
import { BrowserRouter as Router } from 'react-router-dom'
Установите react-router и react-router-dom следующим образом:
npm install react-router@next react-router-dom@next
Ошибка возникает из-за того, что вы используете react-router v5 вместо v6-
Следуй этим шагам-
Шаг 1:
npm uninstall react-router
npm uninstall react-router-dom
Шаг 2:
npm install react-router@next react-router-dom@next
Шаг 3: Перезагрузите сервер
И все готово!
Эта проблема возникает из-за версии react-router-dom. Попробуйте обновить react-router-dom до версии 6.
Просто запустите команду:
npm install [email protected]
Я думаю, что это может быть связано с установкой устаревшей версии. Я смог запустить npm install history react-router-dom@next, и это решило мою проблему.
Switch устарел в более новых версиях, используйте Routes, он будет действовать так же.
Для react-router-dom v6 и выше используйте это в своем App.js
import React from 'react'
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'
import '../styles/global.css'
import Layout from '../containers/Layout'
import Home from '../pages/Home'
import Login from '../containers/Login'
import RecoveryPassword from '../containers/RecoveryPassword'
import NotFound from '../pages/NotFound'
const App = () => {
return (
<Router>
<Layout>
<Routes>
<Route exact path = "/" element = {<Home/>}/>
<Route exact path = "/login" element = {<Login/>}/>
<Route exact path = "/recovery-password" element = {<RecoveryPassword/>}/>
<Route path = "*" element = {<NotFound/>}/>
</Routes>
</Layout>
</Router>
);
}
export default App;
Switch изменено на Routes
<Route path = '/' component = {Home}></Route>
изменился на
<Route path = '/' element= {<Home />}></Route>
Вы должны удалить папку: "node_modules" и написать это:
npm i react react-dom react-router-dom
Меня устраивает.
Добро пожаловать в Stack Overflow. Пожалуйста, прочтите Как ответить, а затем отредактируйте этот ответ, чтобы объяснить, что вы делаете и почему.
работал, установив:
npm install react-router-dom@5
в папке проекта
пожалуйста, используйте это; импортировать {BrowserRouter, Route, Link} из "react-router-dom";