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

react-router-dom v6读取pathname属性抛出两个错误该如何解决?

问题解决方法

报错根因

你使用了react-router-dom v6的底层Router组件且未传入必要的history参数。Router作为核心底层组件不会默认创建history实例,缺少参数时内部拿到的location值为undefined,就会触发你遇到的pathname解构报错,和报错指向的react-router源码位置完全对应。

修复方案

方案一(优先推荐,改动最小)

直接将导入的Router替换为封装好的上层路由组件BrowserRouter(浏览器端路由场景),不需要额外传参,BrowserRouter内部已经内置了history实例创建逻辑,修改导入代码即可,其余JSX结构无需调整:

// 把原来的Router导入替换成下面的写法
import { BrowserRouter as Router, Routes, Route, Link, NavLink } from 'react-router-dom'
import Home from './views/Home.jsx';

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

export default App;

方案二(自定义history场景使用)

如果你确实需要自定义history实例(比如要在组件外部操作路由),可以手动创建history实例传入Router组件:

import { Router, Routes, Route, Link, NavLink } from 'react-router-dom'
// 从history包导入创建方法
import { createBrowserHistory } from 'history'
// 手动创建history实例
const history = createBrowserHistory()
import Home from './views/Home.jsx';

function App() {
  return (
    {/* 把创建好的history传给Router组件 */}
    <Router history={history}>
      <div>
        <Link to="/home">Home</Link>
      </div>
      <Routes>
        <Route path="/home" element={<Home/>}/>
      </Routes>
    </Router>
  );
}

export default App;

说明

你之前尝试的重新安装依赖、升级history版本无法解决问题,是因为该报错不属于依赖版本冲突,属于API使用方式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:36:03