记录一下cnpm install安装依赖包的一个坑

353 阅读1分钟

简介

在安装项目依赖的时候,为了提高安装速度,有时候会使用cnpm. 但是今天遇到一个问题 cnpm没有安装package-lock.json里面的锁定版本,所以导致项目运行不起来!


问题:最近在使用cnpm安装package.json中的依赖后,发现项目运行不起来了!

描述:项目是使用react+ts+antd搭建的,运行之后就各种报ts的错误,一开始也以为是ts版本不兼容的问题,后来才发现是cnpm 安装依赖包的问题!(一般不使用cnpm安装,这个项目是使用了node-sass,所以本来为了省事才使用cnpm,没想到掉进这么大的坑里)

cnpm

优点:安装速度快

缺点:没办法保证每个同事安装依赖包的版本一致,就会出现依赖包版本不兼容的问题。

npm

优点:通过package-lock.json文件能够锁定版本。

缺点:安装速度慢。

以我这次的经历来说,项目里package.json文件要求的react-app-rewired版本

"react-app-rewired":"^2.1.3",

package-lock.json里的锁定的react-app-rewired版本

react-app-rewired": {
"version": "2.1.3",
"resolved":"https://registry.npm.taobao.org/react-app-rewired/download/react-app-rewired-2.1.3.tgz",
"integrity":"sha1-WuhYPsyfn5aNQLc10qu+hxN4pS8=",
"dev": true,
"requires": {
    "cross-spawn":"^6.0.5",
    "dotenv":"^6.2.0",
    "semver":"^5.6.0"
  },
}

但是用cnpm安装的版本是2.1.8,并没有根据package-lock.json里面的限制安装依赖。所以项目运行不起来!