记录下今天上午在运行一个比较老的项目时,出现的各种报错,困扰了一上午查询了国内外各种论坛上的修正方法,至少对我是无效的,最终还是解决了。
说明,我不是前端工程师,我主要负责后端,因此我不会过于专业性探讨问题原因,只是给出解决方案和猜测。以下为具体内容:
运行一个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
亲测其实是没用的。
有个莫斯科的老哥说
在您的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.
然后就没有问题啦:
最后总结:其实不算一个很复杂的问题,但是因为网上各种解决方法的引导导致没能很快的解决,只能说国内的解答质量层次不齐。