npm或者cnpm 安装依赖,不会完全按照package.json中的版本号来,会有稍微的差异,这样的差异可能导致项目起不来,或者报错, 因为某些包只有特定的版本才能正常运行。
解决方案
- npm提供了shrinkwrap命令来解决这个问题。 在项目所有依赖都安装完后,项目可正常稳定运行时,再运行如下命令:
npm shrinkwrap
- 执行后开启锁定package.json模式,自动生成生成
npm-shrinkwrap.json
文件,再运行如下命令:
npm install
提示
cnpm install 不支持
shrinkwrap
模式,解决方法是把npm指向国内地址npm config set registry https://registry.npm.taobao.org
- 配置后可通过下面方式来验证是否成功
npm config get registry
// 或
npm info express
实施过程
我执行后版本依旧不一致,这是因为我已经下载了更高版本的依赖库
删除node_modules
- 安装npm包–rimraf
npm install rimraf -g
- 在所属文件夹下使用cmd指令下,进入所需删除的node_modules文件夹的位置,再输入指令
rimraf node_modules
然后重新执行npm install
命令