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 报错问题的一些理解,如果文章由于我学识浅薄,导致您发现有严重谬误的地方,请一定在评论中指出,我会在第一时间修正我的博文,以避免误人子弟。