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

Windows10执行npm link关联notistack时出现React依赖冲突如何解决?

问题根因

你项目的package.json存在React版本冲突:生产依赖(dependencies)声明了react@^17.0.2,同时开发依赖(devDependencies)又重复声明了react@^16.4.2,版本不匹配导致npm link时React关联失败,最终才会出现多React实例的Hook报错。

解决方案

步骤1:清理项目重复依赖

打开你的项目package.json,删除devDependencies下的react、react-dom两个条目,你已经在生产依赖中安装了可用的React版本,开发依赖的低版本完全冗余,只会导致路径匹配混乱。
删除完成后,删掉项目根目录的node_modules文件夹和package-lock.json文件,重新执行npm install安装依赖。

步骤2:重新走npm link流程

  1. 进入本地fork的notistack根目录L:\git\notistack,先删除该目录下的node_modules文件夹和package-lock.json文件,执行npm install安装依赖,再执行npm link将本地notistack注册到全局。
  2. 进入你的项目根目录L:\react\Greta100Weeks\greta100weeks,执行npm link notistack,将项目依赖的notistack指向本地fork版本。
  3. 回到notistack根目录,重新执行关联命令即可成功:
npm link L:\react\Greta100Weeks\greta100weeks\node_modules\react
npm link L:\react\Greta100Weeks\greta100weeks\node_modules\react-dom

备选兼容方案(无需处理link逻辑,更稳定)

如果npm link还是存在路径兼容问题,可以直接通过webpack别名强制所有依赖统一使用项目内的React版本:
如果是未eject的create-react-app项目,可安装customize-cra、react-app-rewired,新增config-overrides.js配置如下:

const path = require('path');
module.exports = function override(config) {
  config.resolve.alias['react'] = path.resolve(__dirname, './node_modules/react');
  config.resolve.alias['react-dom'] = path.resolve(__dirname, './node_modules/react-dom');
  return config;
}

修改package.json的启动命令为用react-app-rewired替代react-scripts即可,该方案从打包层面强制统一React路径,完全不会出现多实例问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:39:03