Problem entry · machine-readable · 编码代理与终端

npm install 报 npm ERR! code ERESOLVE / ERESOLVE unable to resolve dependency tree(peer 依赖冲突)

本页嵌入 #trove-entity JSON(本条目全量结构化数据);全库数据见 /agent/trove.json。

元数据

idnpm-eresolve-peer-conflict收录2026-08-29
问题域编码代理与终端主题分组安装与依赖
适用工具node · 外部工具npm · 外部工具

症状

老前端项目(Vue2/webpack 4 时代)`npm install` 报:

```

npm ERR! code ERESOLVE

npm ERR! ERESOLVE unable to resolve dependency tree

npm ERR! While resolving: <你的项目>@1.0.0

npm ERR! Found: <已装的主依赖>@<版本>

npm ERR! Could not resolve dependency:

npm ERR! peer <peer 名>@"<peer 版本范围>" from <插件>@<版本>

```

特征:换电脑/换 Node 大版本后最容易出现;项目代码没动过,但依赖就是装不上;错误信息里明确写了冲突双方(Found: ... / peer ... from ...)。

原因

npm 7+ 默认**严格解析 peerDependencies**:会自动安装 peer 依赖,并在版本不满足时直接拒绝整棵依赖树。而 npm 6 时代 peer 不匹配只是静默跳过不检查,所以同一份 package.json 在旧 npm 上"正常"。常见触发:

1. **插件版本过旧**:插件声明的 peer 范围不含新版主依赖(如 eslint-plugin-import@2.22.1 的 peer 是 eslint ^2~^7.2.0,装 eslint 8 即冲突);

2. **两个依赖对同一 peer 要求互相矛盾**,npm 无法同时满足;

3. 换机器后 node/npm 版本变新,触发同样的解析逻辑差异。

解法

按推荐顺序选:

1. **看错误信息定位冲突,修版本(正解)**:错误里的 `Found: ...` 和 `peer ... from ...` 就是冲突双方。优先把插件升级到支持新版主依赖的版本,或把主依赖降回 peer 范围内(`npm view <包> peerDependencies` 查范围)。

2. **快速绕过(最常用)**:`npm install --legacy-peer-deps` —— 跳过 peer 严格检查,接受旧 npm 的语义;`--force` 同理但更粗暴。注意这等于接受"不正确且可能损坏"的依赖解析,装完运行时可能仍有兼容问题,只作过渡。

3. **旧项目整体重装**:删 `node_modules` + `package-lock.json` 后重装;或临时用 npm 6 语义:`npx -p npm@6 npm install --legacy-peer-deps`(无需卸载 npm 7+,npx 指定版本即可)。

4. 若想彻底规避:项目级 `.npmrc` 写 `legacy-peer-deps=true`,让团队默认跳过检查(治标,长期仍建议升依赖)。

验证证据

- 本地实测(2026-08-29,Node v22.22.1 / npm 9.2.0):

- 构造真实冲突:`eslint@8.0.0` + `eslint-plugin-import@2.22.1`(`npm view` 确认 peer 为 `^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0`,不含 8)→ `npm install --dry-run` 完整复现 ERESOLVE 报错链(Found: eslint@8.0.0 / Could not resolve dependency: peer eslint@... from eslint-plugin-import@2.22.1),退出码 1;

- `--legacy-peer-deps` → 解析成功(added 232 packages),退出码 0;

- 清掉 node_modules/lock 后 `--force` → 解析成功(added 232 packages),退出码 0;

- 版本语义对照:本机 npm 9.2.0 vs `npx -p npm@6 npm --version` = 6.14.18(npm 6 不检查 peer,故旧项目当年"正常")。

- 实测复现日志(2026-08-29)

来源与证据

素材来源:https://www.cnblogs.com/yu-ch/p/15942844.html

验证证据:Evidence details kept locally (2026-08-29)