开发者问题收集

尝试使用 React Router v6 时出现错误:尝试导入错误:“Action”未从“history”中导出

2020-07-24
6127

我使用

npx create-react-app app-name
创建了一个新的 React 应用程序。

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

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

知道它出了什么问题吗?

3个回答

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

更多信息请见 此处

kcsujeet
2020-07-30

我的代码没有任何问题。也许问题出在最新版本的 React-Router 上。所以,我刚刚更改了 React-Router 的版本。

"react-router": "^6.0.0-beta.0"
"react-router-dom": "^6.0.0-beta.0"

"react-router": "6.0.0-alpha.2",
"react-router-dom": "6.0.0-alpha.2"

它运行得非常好,没有任何问题。我在问题中提到的相同代码运行良好,没有任何变化。:)

Muhammad Umar Gulzar
2020-07-24

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

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

Josh
2020-09-20