npm install 报错问题 webpack@4.46.0


因为 node 版本不同,在 npm install 的时候, 发生了报错,在这里记录一下解决办法

删除 node_modules 和 package-lock

之后重新安装,在命令后添加–legacy-peer-deps

npm install --legacy-peer-deps

按照其他 node 包的时候,如果遇到了不兼容的问题,都可以使用这样的办法

那么,为什么呢

什么是 peerDependency?

我们日常在前端项目开发过程中,见到最多的一定是 package.json 文件里的 devDependencies(用于在开发环境下依赖的模块)和 dependencies(无论开发环境还是生产环境都需要的依赖模块)这两个字段

peerDependencies 是 npm 的官方文档中提到的一个字段,它的作用是告诉用户,这个模块需要依赖另一个模块,但是这个模块不是直接作为当前模块的依赖,而是作为当前模块的运行环境依赖。

├── CeShi
│ └── node_modules
│ ├── packageA
│ ├── app_A
│ │ └── nodule_modules
│ │ └── packageA
│ └── app_B
│ │ └── nodule_modules
│ │ └── packageA

变成

├── CeShi
│ └── node_modules
│ ├── packageA
│ ├── app_A
│ └── app_B

也就是说,当不同的 node 包需要依赖同一个三方,他只会下载一次,npm 从版本 v7 开始,install 就默认以 peerDependencies 的方式去下载

而 npm install xxxx –legacy-peer-deps 命令用于绕过 peerDependency 里依赖的自动安装;它告诉 npm 忽略项目中引入的各个依赖模块之间依赖相同但版本不同的问题,以 npm v3-v6 的方式去继续执行安装操作。

所以其实该命令并没有真的解决冲突,而是忽略了冲突,以“过时”(v3-v6)的方式进行下载操作。

以上就是我对 npm install 报错问题的一些理解,如果文章由于我学识浅薄,导致您发现有严重谬误的地方,请一定在评论中指出,我会在第一时间修正我的博文,以避免误人子弟。

-------------本文结束感谢您的阅读-------------