React项目使用BrowserRouter报TypeError: Object() is not a function求解
问题根因
你遇到的报错核心原因是 react-router-dom v6 与当前项目的 React 16.6.3 版本不兼容:react-router-dom v6 全面使用了 React Hooks 特性,而 Hooks 是 React 16.8 版本才正式推出的,低于这个版本的 React 无法运行 react-router-dom v6 的相关逻辑。
解决方案
方案1:降级 react-router-dom 到 v5 版本(适配当前项目原始依赖环境,改动最小)
- 先卸载现有版本的 react-router-dom:
npm uninstall react-router-dom - 安装兼容 React 16.6 的 v5 最新稳定版:
npm install react-router-dom@5.3.4 - 不需要改动你已经写的
BrowserRouter相关引入和使用代码,重新运行项目即可正常启动。
方案2:升级 React 及相关依赖适配 react-router-dom v6
如果要继续使用 react-router-dom v6,可以把 React、ReactDOM 升级到 16.8 及以上的兼容版本:
- 执行升级命令:
npm install react@^16.8.0 react-dom@^16.8.0 - 升级完成后重新运行项目即可。
内容的提问来源于stack exchange,提问作者Mohammad
相关产品推荐
相关产品推荐

