npmstart.
实践指南
开始一个项目

npm ERESOLVE 依赖冲突,应该怎么排查?

ERESOLVE 往往出现在 npm 无法满足依赖关系时。报错中最有用的信息不是最后那条建议,而是哪一个包要求了什么版本,以及项目实际安装了什么版本。

从第一组版本冲突读起

在报错中找到 Found、Could not resolve dependency 和 peer 等相关段落。记录当前包版本、产生要求的插件版本,以及插件声明支持的版本范围。例如一个插件只声明支持某个主版本的 React,而项目已经升级到了另一个主版本,就需要检查插件兼容性。

查看声明和实际依赖树

下面以 React 为例,查看项目里出现的版本,并查询相关插件的 peerDependencies。把示例里的插件占位名换成报错中真实出现的包名。npm ls 可能因为树中存在问题返回非零退出码,输出本身仍然有诊断价值。

命令或示例
npm ls react
npm explain react
npm view <plugin-name> peerDependencies

查询默认版本的声明不够时,请使用 包名@版本 查询你正在安装的那个版本。

优先让真实版本关系兼容

查看插件的官方兼容说明,选择明确支持当前框架版本的插件版本;或者在确认项目需求后调整框架版本。一次只改一组相关依赖,审阅 lockfile 的变化,并运行项目的测试、构建和关键页面。不要未经检查就删除锁文件。

理解 legacy-peer-deps 和 force 的代价

legacy-peer-deps 会在构建依赖树时忽略 peerDependencies。force 还会移除 npm 的一些保护。它们能让某些安装过程继续,但并不证明运行时兼容。只有已经确认冲突原因、评估后果并记录项目约定时,再考虑临时使用。

如果项目必须使用特定安装选项,本地和 CI 应保持一致,并写入项目文档。不要把一条绕过校验的命令当作通用修复。

参考资料

命令行为与框架要求会变化。使用前结合你的项目版本,核对相应官方文档。

把需求整理好,再交给 AI。

给下一次开工加上范围、命令和验收清单。

生成项目开工包

你可能接下来会用到

全部指南