Bootstrap

解决 npm install 时报错:npm error code CERT_HAS_EXPIRED 以及 npm error errno CERT_HAS_EXPIRED

一、问题描述

之前一直用的好好的,突然今天发现 npm install 出问题了,具体报错如下:

npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED
npm ERR! request to https://registry.npm.taobao.org/vue-loader failed, reason: certificate has expired

npm ERR! A complete log of this run can be found in:
..........

如图:

在这里插入图片描述

原因:npm 的证书失效了,它不再支持自签名证书

二、解决方案

1、先升级 npm,输入命令:npm install -g npm

再次尝试报不报错,报错进行下一步:

3、执行命令清除npm缓存:npm cache clean --force

再次尝试报不报错,报错进行下一步:

3、查看镜像源,并更换镜像源:

查看镜像源:npm config get registry

假如是淘宝的,请更换为默认的:npm config set registry https://registry.npmjs.org
反之,就切换为 淘宝的 :npm config set registry https://registry.npm.taobao.org

都不行,使用华为云镜像:npm config set registry https://mirrors.huaweicloud.com/repository/npm/

再次尝试报不报错,报错进行下一步:

4、还不行的话,可以尝试设置你的 npm 镜像源为 http 开头的,不使用 https:

npm config set registry http://registry.npm.taobao.org

或者

npm config set registry http://registry.npmjs.org

再次尝试报不报错,报错进行下一步:

5、执行命令取消 ssl 验证:npm config set strict-ssl false。暂时绕过SSL证书验证,但这会降低你的网络安全性,不推荐在生产环境中使用。

注:上面的方法都不行,才使用这个方法

三、问题之外

1. 配置npm下载时的默认安装目录和缓存日志目录

这里的环境配置,主要配置的是:npm安装的全局模块所在的路径,以及缓存 cache 的路径。之所以要配置,是因为 npm install express -g 执行全局安装语句时,会将安装的模块安装到:C:\Users\用户名\AppData\Roaming\npm 路径目录下,久而久之 C 盘很容易被占满(C 盘足够大可以无视此步骤,最好更改目录)。

通过设置,将 默认安装目录 和 缓存日志目录 重新配置到其他盘符。

1、输入命令:

npm config set prefix "D:\nodeJs\node_global"
npm config set cache "D:\nodeJs\node_cache"

① 操作完成会在你所选择的路径建立 node_global 和 node_cache 两个文件夹(没有自动生成就手动创建)。
② 如果你想要修改设置的 node_global 和 node_cache 的名称,可以通过重新输入设置命令的方式修改,或者进入 C:\Users\用户名 目录,修改 .npmrc 文件里面的内容即可。

2、配置好后,可以查看:

npm config get prefix //查看npm全局安装保存路径
npm config get cache //查看npm安装缓存cache路径
2. 配置npm镜像
1、安装时指定安装源(可选择)
npm install 安装的东西(比如:jquery) --registry=https://registry.npm.taobao.org
2、永久指定镜像源:
npm config set registry https://registry.npm.taobao.org
换回默认镜像
npm config set registry https://registry.npmjs.org
假如使用上面这个镜像安装时一直卡着不动,则换成这个:https://registry.npmmirror.com
3、安装cnpm:由于需要加速从而选择安装cnpm(一般情况下选择用npm)
npm install -g cnpm --registry=https://registry.npm.taobao.org
==============================
4、查看镜像
npm config get registry
3. npm常用命令
npm list 查看已经安装的模块
npm install jquery 默认下载最新的版jquery
npm install [email protected] 下载指定版本jquery,后面会将前面的文件覆盖(覆盖式安装)
npm install 模块名 --save 安装这个包,并添加package.json文件中的dependencies部分
npm uninstall jquery 卸载模块,但不卸载模块留在package.json中的对应信息
npm uninstall express --save 卸载模块,同时卸载留在package.json中dependencies下的信
息
npm uninstall express -g 卸载全局模块
npm update 模块名 更新最新版本的模块
npm update 模块名@指定版本 更新到指定版本号的模块
npm search jquery 搜索包
npm view 模块名 version 查看模块最新的版本号

-S、-D、-g 的区别:

1、在使用 npm install 安装模块或者插件时,若写到项目中的 package.json 文件中,用

npm install ... -D 就是 npm install ... --save-dev
npm insatll ... -S 就是 npm install ... --save
/*
-D,-S 分别是--save-dev和--save的简写;
默认就是 -S,可以省略不写;
--save-dev 写入package.json文件devDependencies中;
--save 写入package.json文件dependencies中
*/

devDependencies 用于开发环境,不用于生产环境,例如 vite、sass 插件等(打包后就跟他没关系了);
dependencies 用于生产环境例如 vue、element-plus 等等。

2、-g 全局安装:将安装包放在 node 的安装目录。

至此,问题解决,干货也获得!!!

;