问题描述
我正在通过阅读 Fullstack React book 来学习 React。
我的设置:
node -v
v14.15.3
npm -v
7.3.0
按照styleguidist install guide我跑:
npm -i -D webpack react-styleguidist
已安装:
- webpack v5.11.0
- react-styleguidist 11.1.5
之间似乎存在某种冲突:
这似乎归结为 React 16 基线上的 react-simple-code-editor 中的对等依赖性,而 react-styleguidist 使用 React 17。
package.json 用于react-simple-code-editor:
....
"peerDependencies": {
"react": "^16.0.0","react-dom": "^16.0.0"
}
所以我想知道这里是否有人对 React 16 到 17 的增强有更深入的了解,可以回答 react-simple-code-editor 中的 react/react-dom 是否可以放宽到使用 16+ ?如果是这样,语法是什么?
有关对等依赖关系的更多信息 here。
解决方法
React Styleguidist 有一个 peer dependency of "react": ">=16.8"
。我假设在安装 react-styleguidist 之前,您运行了 npm install --save-dev react
,这将安装 react@17.x。
你有两个选择:
-
降级到 React@16.x
查看 changelog 或 summary blog post 中的更新。如果您没有看到任何必须的更改并且更担心冲突,请降级以解决对等依赖问题。
-
无论如何安装对等依赖
npm 7.x
对对等依赖问题有更严格的错误处理,我能够在 React@17 应用程序中的npm 6.x
上安装这些包没有问题,但我的同事遇到了同样的问题,能够通过npm install --force
绕过它。运行它,它应该可以正常工作。我还没有遇到任何问题,并且一直很高兴地忽略了我的 npm 版本上的警告。
该问题是由自动安装对等依赖项的 npm 7 的 exciting new feature 引起的。这导致同时安装了 React 16 和 React 17,这让一切都爆炸了。
幸运的是,您可以通过以下方式选择退出新功能:
npm install --legacy-peer-deps
它不那么令人兴奋,但从好的方面来说它有效。