解决nodejs应用程序和netlify环境下的依赖版本冲突的不同方法

372 阅读3分钟

ERESOLVE unable to resolve dependency tree when npm install runs in nodejs and netlify

npm install是一个安装应用程序的依赖性的命令。

有时,当你运行npm install时,你会得到依赖性错误npm ERR!ERESOLVE无法解决依赖树,如下图所示。

5:43:24 PM: Installing NPM modules using NPM version 7.11.1
5:43:33 PM: npm ERR! code ERESOLVE
5:43:33 PM: npm ERR! ERESOLVE unable to resolve dependency tree
5:43:33 PM: npm ERR!
5:43:33 PM: npm ERR! Found: compression-webpack-plugin@3.1.0
5:43:33 PM: npm ERR! node_modules/compression-webpack-plugin
5:43:33 PM: npm ERR!   compression-webpack-plugin@"9.0.1" from the root project
5:43:33 PM: npm ERR!
5:43:33 PM: npm ERR! Could not resolve dependency:
5:43:33 PM: npm ERR! compression-webpack-plugin@"9.0.1" from the root project
5:43:33 PM: npm ERR!
5:43:33 PM: npm ERR! Conflicting peer dependency: webpack@5.64.4
5:43:33 PM: npm ERR! node_modules/webpack
5:43:33 PM: npm ERR!   peer webpack@"^5.1.0" from compression-webpack-plugin@9.0.1
5:43:33 PM: npm ERR!   node_modules/compression-webpack-plugin
5:43:33 PM: npm ERR!     compression-webpack-plugin@"9.0.1" from the root project
5:43:33 PM: npm ERR!
5:43:33 PM: npm ERR! Fix the upstream dependency conflict, or retry
5:43:33 PM: npm ERR! this command with --force, or --legacy-peer-deps
5:43:33 PM: npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
5:43:33 PM: npm ERR!
5:43:33 PM: npm ERR! See /opt/buildhome/.npm/eresolve-report.txt for a full report.
5:43:33 PM: npm ERR! A complete log of this run can be found in:
5:43:33 PM: npm ERR!     /opt/buildhome/.npm/_logs/2021-11-26T12_13_33_353Z-debug.log
5:43:33 PM: Error during NPM install

这是一个与错误有关的依赖冲突版本不匹配的直接和间接依赖,有不正确和破碎的依赖。

根据上面的堆栈跟踪错误,你把webpack从5.1.0升级到了5.64.4,但是没有升级间接依赖的compression-webpack-plugin 3.1.0而不是9.0.1。

一个应用程序的webpack依赖性试图从两个地方解决

这个错误发生在任何应用程序类型,如Angular、react、vuejs和gatsby。在这种情况下,有什么解决办法?

修复node.js中冲突的对等依赖性

有多种方法可以解决这个问题

一种方法,下载node和npm版本

以下是步骤

  • 将npm版本降级到之前的版本
  • 删除node_modules文件夹
  • 删除package-lock.json
  • 请再做一次npm安装,对依赖关系进行重新安装

下面是你可以做的一连串的命令

rm -rf node_modules
rm package-lock.json
npm install

第二种方法,降级或升级依赖关系 在上面的例子中,要么把webpack依赖关系降级到5.1.0,要么把compression-webpack-plugin升级到9.0.1

第三种方法,使用-force或-legacy-peer-deps选项运行npm安装,以设置对等的依赖关系来自动解决。

请尝试以下命令来解决依赖性冲突

npm install --save --legacy-peer-deps
npm install  --legacy-peer-deps
npm install  --force

第四种方法。

用下面的配置更新 .npmrc文件。

也可以用下面的npm命令进行配置

npm config set legacy-peer-deps true

修复netlify的依赖冲突版本

这是一个你在netlify环境下构建和部署管道时经常遇到的错误。

在netlify中没有命令行来设置peerDependency。

要解决这个问题,请进入应用程序的根目录 创建.npmrc文件

添加或更新下面的配置 .npmrc文件

legacy-peer-deps=true

提交更改并部署到netlify环境中。

它解决了一个错误,并且成功解决了依赖关系。

结语

综上所述,学会了解决nodejs应用程序和netlify环境下的依赖版本冲突的不同方法。