macOS下使用Node@10.2.0安装Redux遭遇ERESOLVE依赖树解析失败,--force与--legacy-peer-deps均无效求助
先帮你理清楚这个问题的核心:你在macOS上使用node@10.2.0,执行npm i时遇到了ERESOLVE依赖树解析错误,试过--force和--legacy-peer-deps都没效果。本质是你项目里安装的redux@4.1.0,和redux-log-slow-reducers@0.0.2要求的peer依赖(仅支持redux@1.0.0或2.0.0)版本完全不匹配。
你的终端执行命令及输出整理如下:
hiteshagarwal@Hiteshs-MBP kuber % npm i (node:48924) ExperimentalWarning: The fs.promises API is experimental npm ERR! code ERESOLVE npm ERR! ERESOLVE 无法解析依赖树 npm ERR! npm ERR! 解析过程中:client@0.1.0 npm ERR! 已找到:redux@4.1.0 npm ERR! node_modules/redux npm ERR! 根项目中的redux@"^4.0.1" npm ERR! npm ERR! 无法解析依赖项: npm ERR! redux-log-slow-reducers@0.0.2要求peer依赖redux@"^2.0.0 || ^1.0.0" npm ERR! node_modules/redux-log-slow-reducers npm ERR! 根项目中的redux-log-slow-reducers@"0.0.2" npm ERR! npm ERR! 请修复上游依赖冲突,或使用--force或--legacy-peer-deps参数重新运行此命令 npm ERR! 以接受不正确(且可能存在问题)的依赖解析结果。 npm ERR! npm ERR! 完整报告请查看:/Users/hiteshagarwal/.npm/eresolve-report.txt npm ERR! 本次运行的完整日志可在以下位置找到: npm ERR! /Users/hiteshagarwal/.npm/_logs/2021-05-09T13_52_12_776Z-debug.log
给你几个实用的解决思路:
降级redux版本适配旧包
既然redux-log-slow-reducers只兼容redux1.x/2.x,你可以把项目里的redux降级到符合要求的版本,执行这条命令:npm install redux@^2.0.0 --save之后再运行
npm i应该就能正常安装了。不过要注意,降级redux可能会影响项目里其他依赖redux的包(比如react-redux),得提前确认这些包是否支持redux@2.x版本。移除过时的
redux-log-slow-reducers包
这个包的版本是0.0.2,看起来已经很久没有维护了,大概率已经没有继续使用的必要。如果你的项目里这个功能不是必须的,直接卸载它:npm uninstall redux-log-slow-reducers --save卸载后再执行
npm i,依赖冲突自然就消失了,这也是最省心的方案。排查参数无效的原因并调整环境
你提到用了--legacy-peer-deps没效果,这是因为--legacy-peer-deps是npm v7才引入的参数,而node@10.2.0默认搭配的npm是v6.x版本,这个参数在v6里根本不生效!如果一定要用这个参数,你需要:- 先把node版本升级到v10.13.0及以上(npm v7要求的最低node版本)
- 升级npm到v7+:
npm install -g npm@7 - 再执行
npm i --legacy-peer-deps
不过node@10本身也已经进入维护末期了,长远来看更建议升级到node@14或更高的LTS版本,避免这类环境兼容问题。
内容的提问来源于stack exchange,提问作者Hitesh Agarwal

