最近开发了一个React拖拽排序组件库,计划通过npm link到本地测试时,遇到了报错:Warning: Invalid hook call. Hooks can only be called inside of the body of a function component.经过多轮排查,最终发现到React多实例冲突pnpm对peerDependencies的隐式安装是核心原因,以下是完整解决流程,供同类问题参考

一、问题初判:React版本兼容性?

测试项目使用Next 15(App Router)报错,初步怀疑版本冲突:

二、排查方向:组件库依赖配置问题

查阅React官方文档(Invalid Hook Call警告)和关键Issue(https://github.com/facebook/react/issues/13991),提示可能是**React多实例**或**Hooks未在函数组件内调用**导致。因为组件代码没有问题所以排除后者,重点排查多实例:

1. 验证多实例的关键方法

2. 修复尝试:配置peerDependencies与外部化

三、关键突破:React路径指向异常

尝试暴力验证:将组件库打包后的import React from 'react'改为测试项目中React的绝对路径(如import React from '/path/to/test-project/node_modules/react'),测试项目运行正常

四、终极原因:pnpm对peerDependencies的隐式安装

进一步排查依赖管理工具pnpm的特性: