NodeJS第 4 篇,cnpm安装不上,报错,npm ERR! code CERT_HAS_EXPIRED,npm ERR! errno CERT_HAS_EXPIRED(安装cnpm报错)

本文介绍了cnpm安装失败的常见原因,主要是由于SSL证书过期导致的连接问题。解决方法包括清理npm缓存,更新淘宝NPM镜像源为https://registry.npmmirror.com,并检查和配置环境变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

cnpm(China NPM)是由淘宝团队开发和维护的一个 npm 的镜像源。它的主要目的是为了解决,因地理位置和网络问题,导致的npm包安装速度慢和稳定性差的问题。通过使用cnpm,我们中国的开发者可以更快地安装和管理npm包。 

一. 镜像说明

首先,npm 和 cnpm都可以设置镜像,而且可以设置为使用相同的镜像(如淘宝镜像、华为镜像),从而提高在我们国家地区的下载速度,它们的主要区别和优点,请看

1. 主要区别

① npm

  • 介绍:我们都知道,npm 是 Node Package Manager 的缩写,它是一个用于 Node.js 项目的包管理和分发的工具。通过 npm,开发者可以方便地安装、分享和管理项目中使用的各种依赖包。而在使用 npm config set registry https://registry.npmmirror.com/ 命令后,可以将 npm 的默认注册源设置为淘宝镜像(npmmirror)。此后,所有使用 npm 命令(如 npm install)时,都会从这个镜像下载包。
  • 优点:提升下载速度,同时依然使用 npm 的 CLI 工具。

② cnpm

  • cnpm 是淘宝团队开发的 npm 客户端,专为中国地区的 npm 包下载设计。安装 cnpm 后,它默认使用淘宝的镜像,无需额外配置。使用方法与 npm 类似,例如直接使用 cnpm install 来安装包。
  • 优点:优化了下载体验,具备更强的容错能力和更快的速度。

npm 是原生的包管理工具,即使配置了镜像,行为依然是基于 npm 的,而 cnpm 则是为中国用户优化的独立工具,提供了更好的下载体验。

2. 环境查看

① npm

npm config get registry

该命令可用于查看当前 npm 使用的镜像源。

② cnpm

cnpm config get registry

该命令可用于查看当前 cnpm 使用的镜像源。

3. 镜像推荐

① 华为云镜像

https://repo.huaweicloud.com/repository/npm/

cnpm set registry https://repo.huaweicloud.com/repository/npm/

② 中国科学技术大学 (USTC) 镜像

https://mirrors.ustc.edu.cn/npm

cnpm set registry https://mirrors.ustc.edu.cn/npm


二. 安装问题

1. 问题场景

我们在使用cnpm命令时,需要全局安装 cnpm(China NPM Mirror)并设置淘宝的NPM镜像作为仓库地址,执行以下命令,安装相应插件,请看

npm install -g cnpm -registry=https://registry.npm.taobao.org

但有时候,我们在执行该命令,安装cnpm的时候,会遇到安装不上的情况,就像下面这种情况,请看

可以看到报错信息

npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED

意思是当你尝试连接到npm仓库时,遇到了SSL证书过期的问题,

原因就是因为,旧的域名 https://npm.taobao.org 和 https://registry.npm.taobao.org 已经在 2022 年 5 月 31 日停止服务,需要更换新的镜像服务。

2. 配置新域名

淘宝 NPM 镜像的新域名,请看

https://registry.npmmirror.com/ 

所以,直接执行设置新域名

npm install -g cnpm -registry=https://registry.npmmirror.com

3. 问题小结

安装问题小结。如遇到以上问题,解决过程,文字描述,请看

首先,需要清空 npm缓存,然后,更换 npm镜像源地址,最后重新下载使用。若依旧安装失败,这时需要检查电脑防火墙设置,关闭防火墙后,才能下载使用


三. 重新配置

关闭防火墙后,重新下载配置,请看

1. 清除缓存

重新安装cnpm时,最好先清除npm缓存,命令如下,请看

npm cache clean --force

2. 更改镜像

然后,更改成华为云的npm镜像,命令如下,请看

npm config set registry https://mirrors.huaweicloud.com/repository/npm/ 

npm config set registry 后面加镜像源地址,表示全局配置该镜像源。

3. 查看环境

这里可通过 npm get registry 命令,查看当前环境下使用的镜像源地址,可以用来查看镜像源地址是否跟换成功

npm get registry
//或者
npm config get registry
//都可以

执行命令后,可以看到当前使用的镜像源,

4. 重新下载

设置完镜像源地址后,重新下载 cnpm,执行以下命令,请看

npm install -g cnpm

5. 检查安装

然后通过 cnpm -v(小写v)检查是否安装成功,请看

可以看到这时已经安装成功,然后就可以将npm更换成cnpm使用。

6. 常用镜像地址

这里给大家列举以下常用的镜像源地址,请看

官方源(npm registry):https://registry.npmjs.org/

淘宝NPM镜像源:https://registry.npmmirror.com/

cnpm镜像源:http://r.cnpmjs.org/

阿里云NPM镜像源:https://npm.aliyun.com/

腾讯云NPM镜像源:https://mirrors.cloud.tencent.com/npm/

华为云NPM镜像源:https://mirrors.huaweicloud.com/repository/npm/

网易NPM镜像源:https://mirrors.163.com/npm/

中国科学技术大学开源镜像站:http://mirrors.ustc.edu.cn/npm/

清华大学开源镜像站:https://mirrors.tuna.tsinghua.edu.cn/npm/

7. 命令识别问题

通常情况下,安装完 cnpm 后无需额外配置环境变量即可直接使用。然而,如果您在安装或使用过程中遇到问题,例如系统无法识别 cnpm 命令,这可能是由于环境变量配置不当或权限设置问题引起的。此时,建议检查并正确配置环境变量,或者调整相关权限设置,以确保 cnpm 能够正常运行。而cnpm配置环境变量,一般的cnpm文件地址为如下,请看

C:\Users\Administrator\AppData\Roaming\npm

8. 设置远程签名

如果cnpm安装完成后,cnpm命令,在命令提示符窗口管用,而在Vscode中不生效,则需要在PowerShell中 设置远程签名,跟Vue命令,在命令提示窗口管用,在Vscode中不生效情况,是一样的,具体的配置流程如下,请看

npm、cnpm、vue等命令在命令提示符窗口管用,在Vscode中命令不生效icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_65793170/article/details/128987191?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170922812116800197041820%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170922812116800197041820&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-8-128987191-null-null.nonecase&utm_term=vue&spm=1018.2226.3001.4450


四. 总体小结

如果在使用 npm 安装 cnpm 时,遇到问题,请首先尝试清空 npm 缓存,并更换为更快速的镜像源,如淘宝镜像、华为镜像。若问题依旧存在,这时需要检查并关闭防火墙设置,才能够下载使用。

创作不易,感觉有用,就一键三连,感谢(●'◡'●)

<think>好的,我现在要解决用户遇到的npm安装包时出现的CERT_HAS_EXPIRED错误。这个问题通常是由于使用的镜像源证书过期导致的。根据用户提供的引用信息,特别是引用[4]提到淘宝的npm镜像已经从registry.npm.taobao.org更改为registry.npmmirror.com,所以首先需要确认用户是否还在使用旧的镜像地址。 首先,用户应该检查当前的npm镜像配置。通过运行npm config get registry命令,可以查看当前设置的镜像地址。如果返回的是https://registry.npm.taobao.org/,说明用户还在使用旧的地址,需要更新为新的https://registry.npmmirror.com/。这是因为旧的域名可能已经停止维护,证书没有续期,导致SSL验证失败。 接下来,用户需要修改npm的配置,使用正确的镜像源。根据引用[4]的建议,可以通过npm config set registry命令来更新。正确的命令应该是npm config set registry https://registry.npmmirror.com。这样设置之后,npm会使用新的镜像地址,避免证书过期的问题。 另外,有些用户可能因为某些原因必须使用HTTP而是HTTPS。这时候可以临时将镜像源切换为HTTP协议,例如http://registry.npmmirror.com。但需要注意,这样做会降低安全性,因为数据传输再加密,建议仅在测试环境下使用,并及时切换回HTTPS。 还有一个可能的解决方案是跳过SSL证书验证,但这同样存在安全风险。用户可以通过npm config set strict-ssl false来禁用严格SSL检查,或者在使用npm install时添加--strict-ssl=false参数。过,这种方法推荐在生产环境中使用,因为它会让系统容易受到中间人攻击。 此外,清除npm缓存也是一个有效的步骤。有时候缓存中可能存储了旧的证书信息,导致问题持续存在。运行npm cache clean --force可以清除缓存,然后再次尝试安装依赖包。 如果用户是在使用nvm管理Node.js版本的情况下遇到问题,可能需要检查nvm的配置路径是否正确,确保没有残留的旧配置。同时,检查系统时间是否正确,因为错误的系统时间也可能导致证书验证失败。 最后,用户如果仍然遇到问题,可以尝试切换回官方的npm源,即https://registry.npmjs.org/。虽然国内访问可能较慢,但可以排除镜像源的问题。如果官方源没有问题,那么可以确定问题确实出在镜像源配置上。 总结起来,解决步骤应该是先更新镜像源到新的地址,清除缓存,然后重试安装。如果问题依旧,再考虑其他方法如临时使用HTTP或关闭SSL验证。过,用户需要注意安全风险,优先使用HTTPS的镜像源。</think>### 解决npm证书过期问题(CERT_HAS_EXPIRED) #### 问题原因 报错`npm ERR! code CERT_HAS_EXPIRED`是由于使用的npm镜像源(如淘宝镜像)的SSL证书已过期,导致HTTPS请求验证失败[^1][^2][^3]。 --- #### 分步解决方案 1. **更新镜像源地址** **旧版淘宝镜像**(已弃用): `https://registry.npm.taobao.org` **新版镜像地址**: `https://registry.npmmirror.com` 执行以下命令更新配置: ```bash npm config set registry https://registry.npmmirror.com ``` 2. **临时切换HTTP协议(非推荐)** 如果强制需要旧版域名,可临时使用HTTP协议绕过HTTPS验证[^4]: ```bash npm config set registry http://registry.npmmirror.com ``` 3. **清除npm缓存** 清除可能残留的旧证书缓存: ```bash npm cache clean --force ``` 4. **关闭SSL严格验证(谨慎使用)** 仅限测试环境使用: ```bash npm config set strict-ssl false # 或单次生效 npm install --strict-ssl=false ``` 5. **切换回官方源验证** 排除镜像源问题: ```bash npm config set registry https://registry.npmjs.org/ ``` --- #### 验证是否解决 重新执行安装命令(如`npm install`),若再出现证书错误,则说明配置生效。 --- #### 附加说明 - **安全提醒**:长期使用HTTP或关闭SSL验证会降低安全性,建议优先使用新版HTTPS镜像源[^4]。 - **环境检查**:确保系统时间正确,错误的系统时间也会导致证书验证失败。 ---
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北城笑笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值