关于npm install 之后,npm run serve 执行报错的原因之一
这是一个基于 Vue2.0 的项目,起初搭建项目 node 版本为 12.18.2 , npm 版本为 6.14.5
出现这个问题是因为存在一个情况,我把原本其他仓库的 develop 分支代码 和 正在开发的仓库的 develop 分支代码做了合并。
使用的合并方式是:除了 node_module 其他全靠 ctrl+c ctrl+v。
但是其实两个仓库的 develop 分支中的部分依赖版本不同
- tip: 默认情况下,
npm install将安装所有列为 package.jso 中的依赖项的模块,他们不会每次都安装所有依赖项,并且仅在 package.json 进行更改或清除 node_module 文件后才会更新
所以... 我删掉了 node_module 和 package-lock.json 重新执行 npm install
但!依赖下载太慢了,即使切换 npm 的下载地址为淘宝镜像也慢
tips:
- 将 npm 切换为淘宝镜像
npm config set registry https://registry.npm.taobao.org/ - 使用
npm config get registry可以验证配置是否成功 - 将 npm 设置为 npm 地址
npm config set registry http://registry.npmjs.org/ - 使用淘宝镜像拉取依赖
npm install --registry=https://registry.npm.taobao.org
接着,我清掉了 npm 的缓存(tip: 执行 npm cache clean --force )。再配置下 npm 下载地址,再执行一次 npm install
nice,npm install 成功执行,而且很快。但!
npm run serve 执行时咋爆出了很多警告,例如 /deep/ 需要换成 :deep()
我一想,不对 这不是升级之后的语法吗?可是 package.json 没有升级呀?怎么安装的依赖会被升级了? node 版本和 npm 版本也没切换呀,发生什么事了?
浅查了一下,发现
在 package.json 中 "vue":"^2.6.11" ,中的 "^" 符号是指在使用 npm install 时,在保证大版本号不变的前提下,会尽量帮我们拉取最新代码,所以系统帮我自动升级了版本。所以...才多出了许多警告
tips:
- 删掉"^"这个符号,即 "vue":"2.6.11" ,就是固定版本。在执行
npm install时,就不会自动升级版本 而是一定只下载这个 2.6.11 的版本 - 当固定好 vue 的下载版本,也需要固定 vue-template-compiler 的版本才行,两者版本需要一致呢
至于,为什么会出现 npm run serve 执行成功 但是 npm run build 执行失败呢。是因为 ... 我也不清楚,之后就没有复现了,下次有遇到,我再记录。