为何根package.json出现UNMET PEER DEPENDENCY react-dom@17.0.2错误?
关于
npm ls react-dom出现根目录未满足对等依赖的问题 问题场景
执行npm ls react-dom后得到以下依赖树输出:
package1@28.4.0 /Volumes/Workspace/package1_WT/dev ├─┬ @storybook/components@5.1.11 │ └── UNMET PEER DEPENDENCY react-dom@16.14.0 ├─┬ @storybook/react@5.1.11 │ └─┬ @storybook/core@5.1.11 │ └─┬ @storybook/ui@5.1.11 │ └── UNMET PEER DEPENDENCY react-dom@16.14.0 ├─┬ randomPackage@12.21.1 │ └── UNMET PEER DEPENDENCY react-dom@17.0.2 deduped └── UNMET PEER DEPENDENCY react-dom@17.0.2
我已在package.json中将react-dom声明为常规依赖(非对等依赖),版本范围为~17.0.0,实际node_modules中安装的react-dom@17.0.2完全符合该版本范围。Storybook相关包的未满足对等依赖错误是合理的,但为何根目录也会显示UNMET PEER DEPENDENCY react-dom@17.0.2的错误?
问题原因及解决办法
这种情况通常有两种原因:
依赖去重导致的报错层级显示异常:
大概率是randomPackage@12.21.1的对等依赖要求react-dom@17.0.2,npm在执行依赖去重(deduped)后,把这个依赖的报错同时显示在了根目录和randomPackage的层级下,本质上这个报错还是属于randomPackage的对等依赖问题。旧版npm的解析bug:
部分旧版本npm在处理常规依赖与对等依赖的优先级时,会误将已安装的常规依赖判定为未满足的对等依赖。可以通过以下操作修复:- 清除npm缓存:
npm cache clean --force - 删除
node_modules和package-lock.json后重新安装:rm -rf node_modules package-lock.json && npm install - 更新npm到最新稳定版本:
npm install -g npm@latest
- 清除npm缓存:
内容的提问来源于stack exchange,提问作者Nicc
相关产品推荐
相关产品推荐

