当前位置: 首页 > news >正文

使用 BrowserRouter 报错 invaild hook call 解决方案

错误信息

Uncaught Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:

  1. You might have mismatching versions of React and the renderer (such as React DOM)
  2. You might be breaking the Rules of Hooks
  3. You might have more than one copy of React in the same app
    See https://fb.me/react-invalid-h… for tips about how to debug and fix this problem.

解决方法

排错发现,只要引入 BrowserRouter 就会报错。

使用 yarn list / npm ls 查看项目的 node_modules 引入,对照另外一个项目的依赖库信息,发现报错的项目中只安装了 react-router@6.3.0 没有安装 react-router-dom

于是 yarn add react-router-dom / npm i react-router-dom,问题解决。

补充

如果有遇到这个问题的小伙伴,可以试试先卸载 react-router-dom 和 react-router,然后再重新安装。
yarn 的操作:
yarn remove react-router-dom
yarn remove react-router
yarn add react-router-dom
npm 的操作:
npm uninstall react-router-dom
npm uninstall react-router
npm install react-router-dom@6

将自己的项目中的依赖信息(react 开头)复制了一下,大家可以对照一下,如果有什么库缺失了可以安装试试看:

react-dom@18.2.0
│ ├─ loose-envify@^1.1.0
│ └─ scheduler@^0.23.0
├─ react-error-overlay@6.0.11
├─ react-is@16.13.1
├─ react-refresh@0.11.0
├─ react-router-dom@6.3.0
│ ├─ history@^5.2.0
│ └─ react-router@6.3.0
├─ react-router@6.3.0
│ └─ history@^5.2.0
├─ react-scripts@5.0.1
│ ├─ @babel/core@^7.16.0
│ ├─ @pmmmwh/react-refresh-webpack-plugin@^0.5.3
│ ├─ @svgr/webpack@^5.5.0
│ ├─ babel-jest@^27.4.2
│ ├─ babel-loader@^8.2.3
│ ├─ babel-plugin-named-asset-import@^0.3.8
│ ├─ babel-preset-react-app@^10.0.1
│ ├─ bfj@^7.0.2
│ ├─ browserslist@^4.18.1
│ ├─ camelcase@^6.2.1
│ ├─ case-sensitive-paths-webpack-plugin@^2.4.0
│ ├─ css-loader@^6.5.1
│ ├─ css-minimizer-webpack-plugin@^3.2.0
│ ├─ dotenv-expand@^5.1.0
│ ├─ dotenv@^10.0.0
│ ├─ eslint-config-react-app@^7.0.1
│ ├─ eslint-webpack-plugin@^3.1.1
│ ├─ eslint@^8.3.0
│ ├─ file-loader@^6.2.0
│ ├─ fs-extra@^10.0.0
│ ├─ fs-extra@10.1.0
│ │ ├─ graceful-fs@^4.2.0
│ │ ├─ jsonfile@^6.0.1
│ │ └─ universalify@^2.0.0
│ ├─ fsevents@^2.3.2
│ ├─ html-webpack-plugin@^5.5.0
│ ├─ identity-obj-proxy@^3.0.0
│ ├─ jest-resolve@^27.4.2
│ ├─ jest-watch-typeahead@^1.0.0
│ ├─ jest@^27.4.3
│ ├─ mini-css-extract-plugin@^2.4.5
│ ├─ postcss-flexbugs-fixes@^5.0.2
│ ├─ postcss-loader@^6.2.1
│ ├─ postcss-normalize@^10.0.1
│ ├─ postcss-preset-env@^7.0.1
│ ├─ postcss@^8.4.4
│ ├─ prompts@^2.4.2
│ ├─ react-app-polyfill@^3.0.0
│ ├─ react-dev-utils@^12.0.1
│ ├─ react-refresh@^0.11.0
│ ├─ resolve-url-loader@^4.0.0
│ ├─ resolve@^1.20.0
│ ├─ sass-loader@^12.3.0
│ ├─ semver@^7.3.5
│ ├─ semver@7.3.7
│ │ └─ lru-cache@^6.0.0
│ ├─ source-map-loader@^3.0.0
│ ├─ style-loader@^3.3.1
│ ├─ tailwindcss@^3.0.2
│ ├─ terser-webpack-plugin@^5.2.5
│ ├─ webpack-dev-server@^4.6.0
│ ├─ webpack-manifest-plugin@^4.0.2
│ ├─ webpack@^5.64.4
│ └─ workbox-webpack-plugin@^6.4.1
├─ react@18.2.0
│ └─ loose-envify@^1.1.0

相关文章:

  • python中assert关键字的作用
  • CSS3 :nth-child(n)用法
  • CSS3中的transition属性详解
  • HTML中导航栏title前面小图标的实现
  • mysql区分大小写
  • SpringMvc中/和/*的区别
  • varchar 和 varchar2的区别
  • IntelliJ IDEA 各种搜索功能
  • HashMap中的tableSizeFor(int cap)
  • Jdk1.8-HashMap put() 方法tab[i = (n - 1) hash] 解惑
  • JDK1.8源码 resize()解析
  • HashMap中的迭代器
  • Hashtable中的get(key)方法,为什么进行hash 0x7FFFFFFF
  • Hashtable中的rehash()方法
  • mysql查询一个时间段的数据
  • Apache Spark Streaming 使用实例
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • css属性的继承、初识值、计算值、当前值、应用值
  • Cumulo 的 ClojureScript 模块已经成型
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • js 实现textarea输入字数提示
  • js学习笔记
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Making An Indicator With Pure CSS
  • Rancher如何对接Ceph-RBD块存储
  • SpriteKit 技巧之添加背景图片
  • vuex 学习笔记 01
  • vue学习系列(二)vue-cli
  • 成为一名优秀的Developer的书单
  • 技术:超级实用的电脑小技巧
  • 浏览器缓存机制分析
  • 你不可错过的前端面试题(一)
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 区块链将重新定义世界
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 手写双向链表LinkedList的几个常用功能
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (1)(1.13) SiK无线电高级配置(六)
  • (2)(2.10) LTM telemetry
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)计算机毕业设计ssm电影分享网站
  • (算法)Game
  • .form文件_一篇文章学会文件上传
  • .md即markdown文件的基本常用编写语法
  • .net 4.0发布后不能正常显示图片问题
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接