记录下今天上午在运行一个比较老的项目时,出现的各种报错,困扰了一上午查询了国内外各种论坛上的修正方法,至少对我是无效的,最终还是解决了。

说明,我不是前端工程师,我主要负责后端,因此我不会过于专业性探讨问题原因,只是给出解决方案和猜测。以下为具体内容:

运行一个VUE项目时,出现多个报错,首先是镜像源问题:

request to https://registry.npm.taobao.org failed, reason certificate has expired

2021 年,淘宝就发文称,npm 淘宝镜像已经从 registry.npm.taobao.org 切换到了 registry.npmmirror.com。旧域名也将于 2022 年 5 月 31 日停止服务,因此需要更换服务,这里我直接使用腾讯镜像源。

npm config set registry http://mirrors.cloud.tencent.com/npm/

设置好之后又报错:

npm ERR! code EINTEGRITY npm ERR! sha1-xxxxxx integrity checksum failed when using sha1: wanted sha1

这种类似的报错,网上给出的解决方案比较多:

方法一:直接删除 package-lock.json 文件,重新执行 npm install

方式二:升级 npm,重新执行 npm install

升级npm npm install -g npm

安装项目依赖 npm install

方式三:清缓存,重新执行 npm install

删除项目下的 node_modules

删除用户缓存 C:\Users\{USER_NAME}\AppData\Roaming\ 下的 npm和npm-cache

删除全局缓存 {NODE_HOME}/node_cache

验证缓存 npm cache verify

安装项目依赖 npm install

很可惜的是,都无法解决我的问题,其实这里直接根据报错信息更改即可,应该是某个凭证校验码,过于老了。而报错直接给出了更改的内容,直接ctrl+f搜索,然后将sha1开头的校验码替换即可。

然后重量级的来了:

npm ERR! code TAR_BAD_ARCHIVE npm ERR! TAR_BAD_ARCHIVE: Unrecognized archive

这个基本无法解决,网上相关的讨论也比较少,提供的几个解决方法,清理缓存什么的,根本解决不了。比如其中有个人说的方法:

npm install --no-package-lock

亲测其实是没用的。

有个莫斯科的老哥说

  1. 在您的package.json中添加一些 gitlab 私有仓库
    "private-package": "git+https://user:pass@gitlab.privateorg.com/project/package#commithash"

实际上似乎也无法解决,另外由于国内被墙,这个链接大概率也是无法访问,如果你尝试挂梯子,node会提示代理出错问题,需要关掉梯子(微笑脸)

这里说下我的解决方法。核心还是包依赖的问题,首先清理缓存

npm cache clean --force

然后直接将自己的npm降版本(果然是黄金方法啊)

npm install npm@6.14.10 -g

added 1 package, and audited 436 packages in 24s

3 packages are looking for funding
  run `npm fund` for details

39 vulnerabilities (12 moderate, 24 high, 3 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues possible (including breaking changes), run:
  npm audit fix --force

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.

然后就没有问题啦:

最后总结:其实不算一个很复杂的问题,但是因为网上各种解决方法的引导导致没能很快的解决,只能说国内的解答质量层次不齐。

带上你的千军万马,虽然终究难免孤军奋战