尝试使用React Router v6时出现错误:尝试导入错误:“操作”未从“历史记录”中导出

时间:2020-07-24 10:26:04

标签: reactjs react-router react-router-dom

我使用创建了一个新的react应用程序

npx create-react-app app-name

然后我将目录更改为该应用程序文件夹,然后运行以下命令。

npm install react-router@next react-router-dom@next

然后我运行了我的应用程序,它运行良好。然后我更改了默认代码,并使用了Routes,Route等。这是APP代码

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

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

function Home()
{
  return <div>
        <h1>Home</h1>
    </div>
}

export default App;

我收到错误消息:

Attempted import error: 'Action' is not exported from 'history'.

错误的路径是:

./node_modules/react-router/index.js

任何想法有什么问题吗?

5 个答案:

答案 0 :(得分:5)

我的代码没有错。也许问题出在最新版本的React-Router上。因此,我只是更改了React-Router的版本。

FROM

<div class='row'>
  <div class='box'>
    <div class='box__item'> </div>
  </div>

  <div class='box'>
    <div class='box__item'> </div>
  </div>

  <div class='box'>
    <div class='box__item'> </div>
  </div>

  <div class='box'>
    <div class='box__item'> </div>
  </div>

  <div class='box'>
    <div class='box__item'> </div>
  </div>

  <div class='box'>
    <div class='box__item'> </div>
  </div>

  <div class='box'>
    <div class='box__item'> </div>
  </div>

  <div class='box'>
    <div class='box__item'> </div>
  </div>

  <div class='box'>
    <div class='box__item'> </div>
  </div>

  <div class='box'>
    <div class='box__item'> </div>
  </div>
</div>

for FTID in Training_Dict:
        Training_Dict[FTID]['TransDate'] = Training_Dict[FTID]['TransDate'].dt.strftime("%d-%m-%y")

它运行正常,没有问题。我在问题中提到的相同代码可以正常工作,而无需进行任何更改。 :)

答案 1 :(得分:4)

您需要安装另一个名为history的软件包。做npm i history

更多信息here

答案 2 :(得分:3)

对于其他发现此问题的人,只要您不依赖matchPath导出(在alpha.2版本中似乎没有导出),@ Muhammad解决方案就可以使用。

但是实际的解决方案是确保已安装history@^5.0.0。一旦这样做,“ Action导出丢失”错误就消失了。因此,@ kcsujeet是正确的,但只需确保您对history的依赖性至少为5.0.0。

答案 3 :(得分:1)

正如其他答案所述,这里的解决方案是安装 history@^5.0.0。但是,如果您使用的是 TypeScript,您可能仍会遇到 'Action' is not exported from 'history' 错误。您需要从 @types/react-router 中删除 @types/react-router-dom/devDependencies

在 react-router 5.x 中,类型未捆绑,因此您需要安装 @types/react-router-dom。在 6.0 预发行版中,类型已经捆绑,因此您无需显式安装它们。如果您保留 5.x 类型,它们就会过时,并且还会依赖于同样过时的 @types/history 4.x。

因此,如果您要在 TypeScript 项目中升级到 react-router 6.0,请删除不必要的类型。

答案 4 :(得分:0)

代替导入Routes组件,而是导入Switch组件... 软件包中没有路由组件。