我正在为我常用的组件开发一个 React 库。在我的根文件夹中,有:
- 我的汇总配置和
src/
包含我的库的文件夹。构建时,捆绑文件(ES、CJS 和 UMD)在dist/
文件夹中。 - 我的工作区:一个简单的
parcel
捆绑应用程序,其中有一个独立的package.json
. 在此package.json
,myLib 处于依赖关系中,我将其链接。
当我想在工作区中使用 myLib 时,我会像这样导入它:import { Button } from 'myLib'
.
在这里,一切似乎都很好。但是在一个组件中我使用了一个钩子并且我有这个错误:
Uncaught Invariant Violation: 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
似乎有两个 React 副本,npm ls react
返回:
└─┬ myLib@1.0.0 invalid
└── react@16.8.6 extraneous
我试图在node_modulesmyLib/
和workspace/
node_modules之间链接 react 和 react-dom ,但它从来没有工作过,这个错误仍然存在。
TLDR;
这是我的文件树:
myLib
│ package.json
│ rollup.config.js
│
└───dist/
│
└───src/
│ │ **
│
└───workspace
│ │ package.json
│ │ index.js
将 myLib 链接到工作区:我去myLib/
,我做,yarn link
然后我去workspace/
,我做yarn link myLib
react 和 react-dom 是peerDependencies inmyLib
和devDependencies inworkspace/
哦,当然我已经看过这里了: