关于npm install 之后,npm run serve 执行报错的原因之一

648 阅读2分钟

关于npm install 之后,npm run serve 执行报错的原因之一

这是一个基于 Vue2.0 的项目,起初搭建项目 node 版本为 12.18.2npm 版本为 6.14.5

出现这个问题是因为存在一个情况,我把原本其他仓库的 develop 分支代码 和 正在开发的仓库的 develop 分支代码做了合并。

使用的合并方式是:除了 node_module 其他全靠 ctrl+c ctrl+v

但是其实两个仓库的 develop 分支中的部分依赖版本不同

  • tip: 默认情况下,npm install 将安装所有列为 package.jso 中的依赖项的模块,他们不会每次都安装所有依赖项,并且仅在 package.json 进行更改或清除 node_module 文件后才会更新

所以... 我删掉了 node_modulepackage-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 执行失败呢。是因为 ... 我也不清楚,之后就没有复现了,下次有遇到,我再记录。