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

React + Vite项目遇Invalid Hooks错误:多版本React怎么解决?

解决React多版本引发的Invalid Hook错误

1. 找出所有嵌套依赖里的React版本

先执行命令查看完整依赖树,定位带冲突版本的包:

# npm用户
npm list react
# pnpm用户
pnpm list react
# yarn用户
yarn list react

执行后会列出所有依赖(包括间接依赖)里的React版本,就能看到哪个包偷偷引入了不同版本的React。

2. 强制所有依赖用统一的React版本

根据你的包管理器,在package.json里添加配置强制统一版本:

  • npm/yarn:
    在package.json中加入:
"resolutions": {
  "react": "^18.2.0", // 替换成你依赖列表里的React版本
  "react-dom": "^18.2.0"
}

然后重新安装依赖:

npm install
# 或者 yarn install
  • pnpm:
    在package.json中加入:
"pnpm": {
  "overrides": {
    "react": "^18.2.0", // 替换成你依赖列表里的React版本
    "react-dom": "^18.2.0"
  }
}

然后执行:

pnpm install

3. 清理缓存+重装依赖

缓存可能残留旧版本,彻底清理后重装:

# npm操作
npm cache clean --force
rm -rf node_modules package-lock.json
npm install
npm run dev

# pnpm操作
pnpm store prune
rm -rf node_modules pnpm-lock.yaml
pnpm install
pnpm run dev

# yarn操作
yarn cache clean
rm -rf node_modules yarn.lock
yarn install
yarn dev

4. 给Vite加别名强制指向根目录React(可选)

如果前面步骤无效,在vite.config.js里添加别名,确保项目只用你安装的那个版本:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path'

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      'react': path.resolve(__dirname, './node_modules/react'),
      'react-dom': path.resolve(__dirname, './node_modules/react-dom')
    }
  }
})

内容的提问来源于stack exchange,提问作者Jenny Sukut

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:12:16